// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: Throwing exception with "throw" and catching it with "try" statement
es5id: 12.14_A2
description: >
    Checking if execution of "catch" catches an exception thrown with
    "throw"
---*/

// CHECK#1
try {
  throw "catchme";	
  $ERROR('#1: throw "catchme" lead to throwing exception');
}
catch(e){}

// CHECK#2
var c2=0;
try{
  try{
    throw "exc";
    $ERROR('#2.1: throw "exc" lead to throwing exception');
  }finally{
    c2=1;
  }
}
catch(e){
  if (c2!==1){
    $ERROR('#2.2: "finally" block must be evaluated');
  }
}
 
// CHECK#3
var c3=0;
try{
  throw "exc";
  $ERROR('#3.1: throw "exc" lead to throwing exception');
}
catch(err){  	
  var x3=1;
}
finally{
  c3=1;
}
if (x3!==1){
  $ERROR('#3.2: "catch" block must be evaluated');
}  
if (c3!==1){
  $ERROR('#3.3: "finally" block must be evaluated');
}
