Index: src/ControlStruct/ExceptTranslate.cc
===================================================================
--- src/ControlStruct/ExceptTranslate.cc	(revision 86d5ba7c5d88e75a531a8a77aa1b549a29ed1f55)
+++ src/ControlStruct/ExceptTranslate.cc	(revision 03eedd50b3945625e0567aa281f4866f35435a82)
@@ -10,6 +10,6 @@
 // Created On       : Wed Jun 14 16:49:00 2017
 // Last Modified By : Andrew Beach
-// Last Modified On : Fri Jul 28 14:03:00 2017
-// Update Count     : 5
+// Last Modified On : Fri Jul 28 15:34:00 2017
+// Update Count     : 6
 //
 
@@ -224,9 +224,7 @@
 			CompoundStmt * block = new CompoundStmt( noLabels );
 
-			// Just copy the exception value.
-			// TODO: Or just store an ObjectDecl?
+			// Just copy the exception value. (Post Validation)
 			ObjectDecl * handler_decl =
-				dynamic_cast<ObjectDecl*>( handler->get_decl() );
-			assert( handler_decl );
+				static_cast<ObjectDecl *>( handler->get_decl() );
 			ObjectDecl * local_except = handler_decl->clone();
 			local_except->set_init(
@@ -242,11 +240,11 @@
 
 			// Save a cast copy of the exception (should always succeed).
-			ObjectDecl * local_except = handler->get_decl()->clone();
-			local_except.set_init(
+			local_except->set_init(
 				new ListInit({ new SingleInit(
 					new VirtualCastExpr( nameOf( except_obj ),
 						local_except->get_type()
 						)
-					) }) );
+					) })
+				);
 #endif
 			block->push_back( new DeclStmt( noLabels, local_except ) );
@@ -588,4 +586,16 @@
 		catchStmt->set_decl( tmp );
 
+		// Validate the Statement's form.
+		ObjectDecl * decl =
+			dynamic_cast<ObjectDecl *>( catchStmt->get_decl() );
+		if ( decl && true /* check decl->get_type() */ ) {
+			// Pass.
+		} else if ( CatchStmt::Terminate == catchStmt->get_kind() ) {
+			throw SemanticError("catch must have exception type");
+		} else {
+			throw SemanticError("catchResume must have exception type");
+		}
+
+		// Track the handler context.
 		GuardValue( cur_context );
 		if ( CatchStmt::Terminate == catchStmt->get_kind() ) {
@@ -593,6 +603,5 @@
 
 			GuardValue( handler_except_decl );
-			handler_except_decl = tmp;
-			//handler_except_decl = catchStmt->get_decl();
+			handler_except_decl = decl;
 		} else {
 			cur_context = ResHandler;
