private void ExecuteTryCatchStmt(Ast.TryCatchStmt stmt, ScriptEnv env) { try { ExecuteBlock(stmt.TryBlock, env); } catch (Exception ex) { Notebook.ErrorMessage = ex.GetExceptionMessage(); ExecuteBlock(stmt.CatchBlock, env); } }
private Ast.Stmt ParseTryCatchStmt(TokenQueue q) { var stmt = new Ast.TryCatchStmt { SourceToken = q.SourceToken }; q.Take("begin"); q.Take("try"); stmt.TryBlock = new Ast.Block { SourceToken = q.SourceToken }; while (q.Peek() != "end") { var tryStmt = ParseStmt(q); if (tryStmt != null) { stmt.TryBlock.Statements.Add(tryStmt); } } q.Take("end"); q.Take("try"); q.Take("begin"); q.Take("catch"); stmt.CatchBlock = new Ast.Block { SourceToken = q.SourceToken }; while (q.Peek() != "end") { var catchStmt = ParseStmt(q); if (catchStmt != null) { stmt.CatchBlock.Statements.Add(catchStmt); } } q.Take("end"); q.Take("catch"); return(stmt); }