michael@0: // Copyright 2009 the Sputnik authors. All rights reserved. michael@0: // This code is governed by the BSD license found in the LICENSE file. michael@0: michael@0: /** michael@0: * The production TryStatement: "try Block Finally" and the production TryStatement: "try Block Catch Finally" michael@0: * michael@0: * @path ch12/12.14/S12.14_A5.js michael@0: * @description Checking "catch" catches the Identifier in appropriate way michael@0: */ michael@0: michael@0: // CHECK#1 michael@0: try { michael@0: throw "catchme"; michael@0: throw "dontcatchme"; michael@0: $ERROR('#1.1: throw "catchme" lead to throwing exception'); michael@0: } michael@0: catch (e) { michael@0: if(e==="dontcatchme"){ michael@0: $ERROR('#1.2: Exception !== "dontcatchme"'); michael@0: } michael@0: if (e!=="catchme") { michael@0: $ERROR('#1.3: Exception === "catchme". Actual: Exception ==='+ e ); michael@0: } michael@0: } michael@0: michael@0: // CHECK#2 michael@0: function SwitchTest1(value){ michael@0: var result = 0; michael@0: try{ michael@0: switch(value) { michael@0: case 1: michael@0: result += 4; michael@0: throw result; michael@0: break; michael@0: case 4: michael@0: result += 64; michael@0: throw "ex"; michael@0: } michael@0: return result; michael@0: } michael@0: catch(e){ michael@0: if ((value===1)&&(e!==4)) $ERROR('#2.1: Exception === 4. Actual: '+e); michael@0: if ((value===4)&&(e!=="ex"))$ERROR('#2.2: Exception === "ex". Actual: '+e); michael@0: } michael@0: finally{ michael@0: return result; michael@0: } michael@0: } michael@0: if (SwitchTest1(1)!==4) $ERROR('#2.3: "finally" block must be evaluated'); michael@0: if (SwitchTest1(4)!==64)$ERROR('#2.4: "finally" block must be evaluated'); michael@0: