/** * File Name: try-010.js * ECMA Section: * Description: The try statement * * This has a try block nested in the try block. Verify that the * exception is caught by the right try block, and all finally blocks * are executed. * * Author: christine@netscape.com * Date: 11 August 1998 */ var SECTION = "try-010"; var VERSION = "ECMA_2"; var TITLE = "The try statement: try in a tryblock"; startTest(); writeHeaderToLog( SECTION + " "+ TITLE); var tc = 0; var testcases = new Array(); var EXCEPTION_STRING = "Exception thrown: "; var NO_EXCEPTION_STRING = "No exception thrown: "; NestedTry( new TryObject( "No Exceptions Thrown", NoException, NoException, 43 ) ); NestedTry( new TryObject( "Throw Exception in Outer Try", ThrowException, NoException, 48 )); NestedTry( new TryObject( "Throw Exception in Inner Try", NoException, ThrowException, 45 )); NestedTry( new TryObject( "Throw Exception in Both Trys", ThrowException, ThrowException, 48 )); test(); function TryObject( description, tryOne, tryTwo, result ) { this.description = description; this.tryOne = tryOne; this.tryTwo = tryTwo; this.result = result; } function ThrowException() { throw EXCEPTION_STRING + this.value; } function NoException() { return NO_EXCEPTION_STRING + this.value; } function NestedTry( object ) { result = 0; try { object.tryOne(); result += 1; try { object.tryTwo(); result += 2; } catch ( e ) { result +=4; } finally { result += 8; } } catch ( e ) { result += 16; } finally { result += 32; } testcases[tc++] = new TestCase( SECTION, object.description, object.result, result ); }