throw-from-catch.js (1026B)
1 // Copyright (C) 2015 the V8 project authors. All rights reserved. 2 // This code is governed by the BSD license found in the LICENSE file. 3 /*--- 4 es6id: 13.6.4.13 5 description: > 6 Control flow during body evaluation should honor `throw` statements within 7 the `catch` block of `try` statements. 8 features: [generators] 9 ---*/ 10 11 function* values() { 12 yield 1; 13 throw new Test262Error('This code is unreachable (following `yield` statement).'); 14 } 15 var CustomError = function() {}; 16 var iterator = values(); 17 var i = 0; 18 var error = new CustomError(); 19 20 assert.throws(CustomError, function() { 21 for (var x of iterator) { 22 try { 23 throw new Error(); 24 } catch (err) { 25 i++; 26 throw error; 27 28 throw new Test262Error('This code is unreachable (following `throw` statement).'); 29 } 30 31 throw new Test262Error('This code is unreachable (following `try` statement).'); 32 } 33 34 throw new Test262Error('This code is unreachable (following `for..in` statement).'); 35 }); 36 37 assert.sameValue(i, 1); 38 39 reportCompare(0, 0);