diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 927f2bf395a15d2712ecf2b93cbdd62e72a8b018..115295c83421d849d7a5793dcc64714d0807faa3 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -371,8 +371,12 @@ protected:
     virtual bool visit(TryStatement *ast)
     {
         State tryBody = check(ast->statement);
-        State catchBody = check(ast->catchExpression->statement);
-        State finallyBody = check(ast->finallyExpression->statement);
+        State catchBody = ReturnOrThrow;
+        if (ast->catchExpression)
+            catchBody = check(ast->catchExpression->statement);
+        State finallyBody = ReachesEnd;
+        if (ast->finallyExpression)
+            finallyBody = check(ast->finallyExpression->statement);
 
         _state = qMax(qMin(tryBody, catchBody), finallyBody);
         return false;