| //------------------------------------------------------------------------------------------------------- | |
| // Copyright (C) Microsoft. All rights reserved. | |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
| //------------------------------------------------------------------------------------------------------- | |
| // basic try/catch testcases | |
| function verify(x,y) | |
| { | |
| if(x != y) | |
| WScript.Echo("ERROR: " + x + " != " + y); | |
| } | |
| var objs = [5, undefined, 'c', "test", [1,2,3] ]; | |
| for(var i = 0; i < objs.length; ++i) | |
| { | |
| // test #1: basic try/catch | |
| try | |
| { | |
| throw objs[i]; | |
| } | |
| catch(a) | |
| { | |
| WScript.Echo("caught " + a); | |
| verify(a, objs[i]); | |
| } | |
| // test #2: try/finally within a try/catch/finally | |
| try | |
| { | |
| try | |
| { | |
| throw objs[i]; | |
| } | |
| finally | |
| { | |
| WScript.Echo("inner finally, i = " + i); | |
| } | |
| } | |
| catch(a) | |
| { | |
| WScript.Echo("caught " + a); | |
| verify(a, objs[i]); | |
| } | |
| finally | |
| { | |
| WScript.Echo("outer finally, i = " + i); | |
| } | |
| // test #3: more deeply nested try/catch/finally | |
| try | |
| { | |
| try | |
| { | |
| try | |
| { | |
| throw objs[i]; | |
| } | |
| finally | |
| { | |
| WScript.Echo("finally #3, i = " + i); | |
| } | |
| } | |
| catch(a) | |
| { | |
| WScript.Echo("caught " + a); | |
| verify(a, objs[i]); | |
| } | |
| finally | |
| { | |
| WScript.Echo("finally #2, i = " + i); | |
| throw "another throw"; | |
| } | |
| } | |
| catch(a) | |
| { | |
| WScript.Echo("caught " + a); | |
| verify(a, "another throw"); | |
| } | |
| } |