Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision cfaabe2c14415175ec7c513717b8c8d4211ed05c)
+++ src/Parser/ParseNode.h	(revision 2873b7372df261ae1d4d627a50f625463f5d4767)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Thu Jun 17 16:23:00 2017
-// Update Count     : 778
+// Last Modified On : Mon Jun 12 13:00:00 2017
+// Update Count     : 779
 //
 
@@ -396,5 +396,5 @@
 Statement * build_resume_at( ExpressionNode * ctl , ExpressionNode * target );
 Statement * build_try( StatementNode * try_stmt, StatementNode * catch_stmt, StatementNode * finally_stmt );
-Statement * build_catch( DeclarationNode * decl, StatementNode * stmt, bool catchAny = false );
+Statement * build_catch( CatchStmt::Kind kind, DeclarationNode *decl, ExpressionNode *cond, StatementNode *body );
 Statement * build_finally( StatementNode * stmt );
 Statement * build_compound( StatementNode * first );
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision cfaabe2c14415175ec7c513717b8c8d4211ed05c)
+++ src/Parser/StatementNode.cc	(revision 2873b7372df261ae1d4d627a50f625463f5d4767)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 14:59:41 2015
 // Last Modified By : Andrew Beach
-// Last Modified On : Thu Jun  8 16:16:00 2017
-// Update Count     : 328
+// Last Modified On : Mon Jun 12 13:03:00 2017
+// Update Count     : 329
 //
 
@@ -181,9 +181,9 @@
 	return new TryStmt( noLabels, tryBlock, branches, finallyBlock );
 }
-Statement *build_catch( DeclarationNode *decl, StatementNode *stmt, bool catchAny ) {
-	std::list< Statement * > branches;
-	buildMoveList< Statement, StatementNode >( stmt, branches );
-	assert( branches.size() == 1 );
-	return new CatchStmt( noLabels, maybeMoveBuild< Declaration >(decl), branches.front(), catchAny );
+Statement *build_catch( CatchStmt::Kind kind, DeclarationNode *decl, ExpressionNode *cond, StatementNode *body ) {
+	std::list< Statement * > branches;
+	buildMoveList< Statement, StatementNode >( body, branches );
+	assert( branches.size() == 1 );
+	return new CatchStmt( noLabels, kind, maybeMoveBuild< Declaration >(decl), maybeMoveBuild< Expression >(cond), branches.front() );
 }
 Statement *build_finally( StatementNode *stmt ) {
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision cfaabe2c14415175ec7c513717b8c8d4211ed05c)
+++ src/Parser/parser.yy	(revision 2873b7372df261ae1d4d627a50f625463f5d4767)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun 10 07:58:44 2017
-// Update Count     : 2401
+// Last Modified On : Mon Jun 12 12:59:00 2017
+// Update Count     : 2402
 //
 
@@ -960,11 +960,11 @@
 handler_clause:
 	CATCH '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = new StatementNode( build_catch( $5, $8 ) ); }
+		{ $$ = new StatementNode( build_catch( CatchStmt::Terminate, $5, nullptr, $8 ) ); }
 	| handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
+		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, $6, nullptr, $9 ) ) ); }
 	| CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = new StatementNode( build_catch( $5, $8 ) ); }
+		{ $$ = new StatementNode( build_catch( CatchStmt::Resume, $5, nullptr, $8 ) ); }
 	| handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $6, $9 ) ) ); }
+		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Resume, $6, nullptr, $9 ) ) ); }
 	;
 
