• antonm@chromium.org's avatar
    Properly process try/finally blocks. · 6b4ff18b
    antonm@chromium.org authored
    In some circumstances, try/finally block can actually catch the exception:
    
    function f() {
      try {
        throw 42;
      } finally {
        return 0;
      }
    }
    
    Therefore when propagating exception to v8::TryCatch, we must be sure
    there is no try/finally blocks as well.
    
    When bulding the messages we should be more conservative and expect that
    any v8::TryCatch with no JS try/catch in between can potentionally
    be the right exception handler.
    
    Plus various minor refactorings.
    
    BUG=1147
    TEST=cctest/test-api/TryCatchAndFinallyHidingException, cctest/test-api/TryCatchAndFinally
    
    Review URL: http://codereview.chromium.org/6526016
    
    git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6809 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
    6b4ff18b
test-api.cc 414 KB