/** * File Name: try-007.js * ECMA Section: * Description: The try statement * * This test has a for-in statement within a try block. * * * Author: christine@netscape.com * Date: 11 August 1998 */ var SECTION = "try-007"; var VERSION = "ECMA_2"; var TITLE = "The try statement: for-in"; startTest(); writeHeaderToLog( SECTION + " "+ TITLE); var tc = 0; var testcases = new Array(); /** * This is the "check" function for test objects that will * throw an exception. */ function throwException() { throw EXCEPTION_STRING +": " + this.valueOf(); } var EXCEPTION_STRING = "Exception thrown:"; /** * This is the "check" function for test objects that do not * throw an exception */ function noException() { return this.valueOf(); } /** * Add test cases here */ TryForIn( new TryObject( "hello", throwException, true )); TryForIn( new TryObject( "hola", noException, false )); /** * Run the test. */ test(); /** * This is the object that will be the "this" in a with block. * The check function is either throwExeption() or noException(). * See above. * */ function TryObject( value, fun, exception ) { this.value = value; this.exception = exception; this.check = fun; this.valueOf = function () { return this.value; } } /** * This function has a for-in statement within a try block. Test cases * are added after the try-catch-finally statement. Within the for-in * block, call a function that can throw an exception. Verify that any * exceptions are properly caught. */ function TryForIn( object ) { try { for ( p in object ) { if ( typeof object[p] == "function" ) { result = object[p](); } } } catch ( e ) { result = e; } testcases[tc++] = new TestCase( SECTION, "TryForIn( " + object+ " )", (object.exception ? EXCEPTION_STRING +": " + object.value : object.value), result ); }