Index: src/SynTree/Expression.cc
===================================================================
--- src/SynTree/Expression.cc	(revision cfaf9beb67593b36a3927861cb7bb364983f7938)
+++ src/SynTree/Expression.cc	(revision 1f37ed02cc74c64f4e7f522e805e7b6fba4e51ee)
@@ -93,5 +93,5 @@
 		return 0;
 	}
-	throw SemanticError( this, "Constant expression of non-integral type " );
+	SemanticError( this, "Constant expression of non-integral type " );
 }
 
Index: src/SynTree/Mutator.h
===================================================================
--- src/SynTree/Mutator.h	(revision cfaf9beb67593b36a3927861cb7bb364983f7938)
+++ src/SynTree/Mutator.h	(revision 1f37ed02cc74c64f4e7f522e805e7b6fba4e51ee)
@@ -136,5 +136,5 @@
 template< typename Container, typename MutatorType >
 inline void mutateAll( Container &container, MutatorType &mutator ) {
-	SemanticError errors;
+	SemanticErrorException errors;
 	for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) {
 		try {
@@ -144,5 +144,5 @@
 				assert( *i );
 			} // if
-		} catch( SemanticError &e ) {
+		} catch( SemanticErrorException &e ) {
 			errors.append( e );
 		} // try
Index: src/SynTree/Statement.cc
===================================================================
--- src/SynTree/Statement.cc	(revision cfaf9beb67593b36a3927861cb7bb364983f7938)
+++ src/SynTree/Statement.cc	(revision 1f37ed02cc74c64f4e7f522e805e7b6fba4e51ee)
@@ -96,16 +96,16 @@
 const char *BranchStmt::brType[] = { "Goto", "Break", "Continue" };
 
-BranchStmt::BranchStmt( Label target, Type type ) throw ( SemanticError ) :
+BranchStmt::BranchStmt( Label target, Type type ) throw ( SemanticErrorException ) :
 	Statement(), originalTarget( target ), target( target ), computedTarget( nullptr ), type( type ) {
 	//actually this is a syntactic error signaled by the parser
 	if ( type == BranchStmt::Goto && target.empty() ) {
-		throw SemanticError( target.get_statement()->location, "goto without target");
-	}
-}
-
-BranchStmt::BranchStmt( Expression *computedTarget, Type type ) throw ( SemanticError ) :
+		SemanticError( target.get_statement()->location, "goto without target");
+	}
+}
+
+BranchStmt::BranchStmt( Expression *computedTarget, Type type ) throw ( SemanticErrorException ) :
 	Statement(), computedTarget( computedTarget ), type( type ) {
 	if ( type != BranchStmt::Goto || computedTarget == nullptr ) {
-		throw SemanticError( computedTarget->location, "Computed target not valid in branch statement");
+		SemanticError( computedTarget->location, "Computed target not valid in branch statement");
 	}
 }
@@ -201,7 +201,7 @@
 }
 
-CaseStmt::CaseStmt( Expression *condition, const std::list<Statement *> &statements, bool deflt ) throw ( SemanticError ) :
+CaseStmt::CaseStmt( Expression *condition, const std::list<Statement *> &statements, bool deflt ) throw ( SemanticErrorException ) :
 	Statement(), condition( condition ), stmts( statements ), _isDefault( deflt ) {
-	if ( isDefault() && condition != 0 ) throw SemanticError( condition, "default case with condition: " );
+	if ( isDefault() && condition != 0 ) SemanticError( condition, "default case with condition: " );
 }
 
Index: src/SynTree/Statement.h
===================================================================
--- src/SynTree/Statement.h	(revision cfaf9beb67593b36a3927861cb7bb364983f7938)
+++ src/SynTree/Statement.h	(revision 1f37ed02cc74c64f4e7f522e805e7b6fba4e51ee)
@@ -179,5 +179,5 @@
 	std::list<Statement *> stmts;
 
-	CaseStmt( Expression *conditions, const std::list<Statement *> &stmts, bool isdef = false ) throw(SemanticError);
+	CaseStmt( Expression *conditions, const std::list<Statement *> &stmts, bool isdef = false ) throw (SemanticErrorException);
 	CaseStmt( const CaseStmt &other );
 	virtual ~CaseStmt();
@@ -263,6 +263,6 @@
 	Type type;
 
-	BranchStmt( Label target, Type ) throw (SemanticError);
-	BranchStmt( Expression *computedTarget, Type ) throw (SemanticError);
+	BranchStmt( Label target, Type ) throw (SemanticErrorException);
+	BranchStmt( Expression *computedTarget, Type ) throw (SemanticErrorException);
 
 	Label get_originalTarget() { return originalTarget; }
Index: src/SynTree/TypeSubstitution.h
===================================================================
--- src/SynTree/TypeSubstitution.h	(revision cfaf9beb67593b36a3927861cb7bb364983f7938)
+++ src/SynTree/TypeSubstitution.h	(revision 1f37ed02cc74c64f4e7f522e805e7b6fba4e51ee)
@@ -98,5 +98,5 @@
 				} // if
 			} else {
-				throw SemanticError( formal, toString( "Attempt to provide non-type parameter: ", toString( *actualIt ).c_str(), " for type parameter " ) );
+				SemanticError( formal, toString( "Attempt to provide non-type parameter: ", toString( *actualIt ).c_str(), " for type parameter " ) );
 			} // if
 		} else {
Index: src/SynTree/Visitor.h
===================================================================
--- src/SynTree/Visitor.h	(revision cfaf9beb67593b36a3927861cb7bb364983f7938)
+++ src/SynTree/Visitor.h	(revision 1f37ed02cc74c64f4e7f522e805e7b6fba4e51ee)
@@ -132,5 +132,5 @@
 template< typename Container, typename VisitorType >
 inline void acceptAll( Container &container, VisitorType &visitor ) {
-	SemanticError errors;
+	SemanticErrorException errors;
 	for ( typename Container::iterator i = container.begin(); i != container.end(); ++i ) {
 		try {
@@ -138,5 +138,5 @@
 				(*i)->accept( visitor );
 			}
-		} catch( SemanticError &e ) {
+		} catch( SemanticErrorException &e ) {
 			errors.append( e );
 		}
