Index: src/InitTweak/FixGlobalInit.cc
===================================================================
--- src/InitTweak/FixGlobalInit.cc	(revision df7a162899ed88ca8f999b93f02bd92f176b2f8a)
+++ src/InitTweak/FixGlobalInit.cc	(revision a16764a6fbfe44300fc8834400a31c89befda091)
@@ -21,5 +21,4 @@
 
 #include "Common/PassVisitor.h"
-#include "Common/SemanticError.h"  // for SemanticError
 #include "Common/UniqueName.h"     // for UniqueName
 #include "InitTweak.h"             // for isIntrinsicSingleArgCallStmt
Index: src/InitTweak/FixInit.cc
===================================================================
--- src/InitTweak/FixInit.cc	(revision df7a162899ed88ca8f999b93f02bd92f176b2f8a)
+++ src/InitTweak/FixInit.cc	(revision a16764a6fbfe44300fc8834400a31c89befda091)
@@ -213,5 +213,5 @@
 			Expression * postmutate( UntypedExpr * expr );
 
-			SemanticError errors;
+			SemanticErrorException errors;
 		  private:
 			template< typename... Params >
@@ -276,10 +276,10 @@
 			// can't use mutateAll, because need to insert declarations at top-level
 			// can't use DeclMutator, because sometimes need to insert IfStmt, etc.
-			SemanticError errors;
+			SemanticErrorException errors;
 			for ( std::list< Declaration * >::iterator i = translationUnit.begin(); i != translationUnit.end(); ++i ) {
 				try {
 					maybeMutate( *i, fixer );
 					translationUnit.splice( i, fixer.pass.staticDtorDecls );
-				} catch( SemanticError &e ) {
+				} catch( SemanticErrorException &e ) {
 					errors.append( e );
 				} // try
@@ -894,5 +894,5 @@
 			)
 			if ( ! diff.empty() ) {
-				throw SemanticError( stmt, std::string("jump to label '") + stmt->get_target().get_name() + "' crosses initialization of " + (*diff.begin())->get_name() + " " );
+				SemanticError( stmt, std::string("jump to label '") + stmt->get_target().get_name() + "' crosses initialization of " + (*diff.begin())->get_name() + " " );
 			} // if
 			// S_G-S_L results in set of objects that must be destructed
@@ -945,5 +945,5 @@
 			GuardValue( isCtor );
 			GuardValue( structDecl );
-			errors = SemanticError();  // clear previous errors
+			errors = SemanticErrorException();  // clear previous errors
 
 			// need to start with fresh sets
@@ -1034,5 +1034,5 @@
 								function->get_statements()->push_back( callStmt );
 							}
-						} catch ( SemanticError & error ) {
+						} catch ( SemanticErrorException & error ) {
 							emit( funcDecl->location, "in ", CodeGen::genPrettyType( function->get_functionType(), function->get_name() ), ", field ", field->get_name(), " not explicitly ", isCtor ? "constructed" : "destructed",  " and no ", isCtor ? "default constructor" : "destructor", " found" );
 						}
@@ -1110,5 +1110,5 @@
 		template< typename Visitor, typename... Params >
 		void error( Visitor & v, CodeLocation loc, const Params &... params ) {
-			SemanticError err( loc, toString( params... ) );
+			SemanticErrorException err( loc, toString( params... ) );
 			v.errors.append( err );
 		}
Index: src/InitTweak/GenInit.cc
===================================================================
--- src/InitTweak/GenInit.cc	(revision df7a162899ed88ca8f999b93f02bd92f176b2f8a)
+++ src/InitTweak/GenInit.cc	(revision a16764a6fbfe44300fc8834400a31c89befda091)
@@ -317,7 +317,7 @@
 		if ( tryConstruct( objDecl ) && ( managedTypes.isManaged( objDecl ) || ((! inFunction || objDecl->get_storageClasses().is_static ) && ! isConstExpr( objDecl->get_init() ) ) ) ) {
 			// constructed objects cannot be designated
-			if ( isDesignated( objDecl->get_init() ) ) throw SemanticError( objDecl, "Cannot include designations in the initializer for a managed Object. If this is really what you want, then initialize with @=.\n" );
+			if ( isDesignated( objDecl->get_init() ) ) SemanticError( objDecl, "Cannot include designations in the initializer for a managed Object. If this is really what you want, then initialize with @=.\n" );
 			// constructed objects should not have initializers nested too deeply
-			if ( ! checkInitDepth( objDecl ) ) throw SemanticError( objDecl, "Managed object's initializer is too deep " );
+			if ( ! checkInitDepth( objDecl ) ) SemanticError( objDecl, "Managed object's initializer is too deep " );
 
 			objDecl->set_init( genCtorInit( objDecl ) );
Index: src/InitTweak/InitTweak.cc
===================================================================
--- src/InitTweak/InitTweak.cc	(revision df7a162899ed88ca8f999b93f02bd92f176b2f8a)
+++ src/InitTweak/InitTweak.cc	(revision a16764a6fbfe44300fc8834400a31c89befda091)
@@ -225,5 +225,5 @@
 					// xxx - this shouldn't be an error, but need a way to
 					// terminate without creating output, so should catch this error
-					throw SemanticError( init->location, "unbalanced list initializers" );
+					SemanticError( init->location, "unbalanced list initializers" );
 				}
 
