Index: src/CodeGen/CodeGenerator.cpp
===================================================================
--- src/CodeGen/CodeGenerator.cpp	(revision d84f2ae33ff967a0dcd536586c44e74523d30775)
+++ src/CodeGen/CodeGenerator.cpp	(revision 454aab2d00e92a088b70cd656bc8f20cbc76b2a6)
@@ -1130,8 +1130,19 @@
 }
 
+void CodeGenerator::postvisit( ast::TryStmt const * stmt ) {
+	assertf( !options.genC, "TryStmt should not reach code generation." );
+
+	output << "try ";
+	stmt->body->accept( *visitor );
+	for ( ast::ptr<ast::CatchClause> const & handler : stmt->handlers ) {
+		handler->accept( *visitor );
+	}
+	if ( stmt->finally ) stmt->finally->accept( *visitor );
+}
+
 void CodeGenerator::postvisit( ast::CatchClause const * stmt ) {
 	assertf( !options.genC, "CatchClause should not reach code generation." );
 
-	output << ((stmt->kind == ast::Terminate) ? "catch" : "catchResume");
+	output << ((stmt->kind == ast::Terminate) ? " catch " : " catchResume ");
 	output << "( ";
 	stmt->decl->accept( *visitor );
@@ -1142,4 +1153,11 @@
 	output << " ) ";
 	stmt->body->accept( *visitor );
+}
+
+void CodeGenerator::postvisit( ast::FinallyClause const * clause ) {
+	assertf( !options.genC, "FinallyClause should not reach code generation." );
+
+	output << " finally ";
+	clause->body->accept( *visitor );
 }
 
Index: src/CodeGen/CodeGenerator.hpp
===================================================================
--- src/CodeGen/CodeGenerator.hpp	(revision d84f2ae33ff967a0dcd536586c44e74523d30775)
+++ src/CodeGen/CodeGenerator.hpp	(revision 454aab2d00e92a088b70cd656bc8f20cbc76b2a6)
@@ -106,5 +106,7 @@
 	void postvisit( ast::ReturnStmt const * );
 	void postvisit( ast::ThrowStmt const * );
+	void postvisit( ast::TryStmt const * );
 	void postvisit( ast::CatchClause const * );
+	void postvisit( ast::FinallyClause const * );
 	void postvisit( ast::WaitForStmt const * );
 	void postvisit( ast::WithStmt const * );
