1/** 2 * File Name: try-001.js 3 * ECMA Section: 4 * Description: The try statement 5 * 6 * This test contains try, catch, and finally blocks. An exception is 7 * sometimes thrown by a function called from within the try block. 8 * 9 * This test doesn't actually make any LiveConnect calls. 10 * 11 * 12 * Author: christine@netscape.com 13 * Date: 11 August 1998 14 */ 15 var SECTION = ""; 16 var VERSION = "ECMA_2"; 17 var TITLE = "The try statement"; 18 19 startTest(); 20 writeHeaderToLog( SECTION + " "+ TITLE); 21 22 var tc = 0; 23 var testcases = new Array(); 24 25 var INVALID_JAVA_INTEGER_VALUE = "Invalid value for java.lang.Integer constructor"; 26 27 TryNewJavaInteger( "3.14159", INVALID_JAVA_INTEGER_VALUE ); 28 TryNewJavaInteger( NaN, INVALID_JAVA_INTEGER_VALUE ); 29 TryNewJavaInteger( 0, 0 ); 30 TryNewJavaInteger( -1, -1 ); 31 TryNewJavaInteger( 1, 1 ); 32 TryNewJavaInteger( Infinity, Infinity ); 33 34 test(); 35 36 /** 37 * Check to see if the input is valid for java.lang.Integer. If it is 38 * not valid, throw INVALID_JAVA_INTEGER_VALUE. If input is valid, 39 * return Number( v ) 40 * 41 */ 42 43 function newJavaInteger( v ) { 44 value = Number( v ); 45 if ( Math.floor(value) != value || isNaN(value) ) { 46 throw ( INVALID_JAVA_INTEGER_VALUE ); 47 } else { 48 return value; 49 } 50 } 51 52 /** 53 * Call newJavaInteger( value ) from within a try block. Catch any 54 * exception, and store it in result. Verify that we got the right 55 * return value from newJavaInteger in cases in which we do not expect 56 * exceptions, and that we got the exception in cases where an exception 57 * was expected. 58 */ 59 function TryNewJavaInteger( value, expect ) { 60 var finalTest = false; 61 62 try { 63 result = newJavaInteger( value ); 64 } catch ( e ) { 65 result = String( e ); 66 } finally { 67 finalTest = true; 68 } 69 testcases[tc++] = new TestCase( 70 SECTION, 71 "newJavaValue( " + value +" )", 72 expect, 73 result); 74 75 testcases[tc++] = new TestCase( 76 SECTION, 77 "newJavaValue( " + value +" ) hit finally block", 78 true, 79 finalTest); 80 81 } 82 83