| // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| /** |
| * @assertion The try statement supports the definition of exception handling |
| * code in a structured way. |
| * tryStatement: |
| * try block (onPart+ finallyPart? | finallyPart) |
| * ; |
| * onPart: |
| * catchPart block | |
| * on type catchPart? block |
| * ; |
| * catchPart: |
| * catch ‘(’ identifier (‘, ’ identifier)? ‘)’ |
| * ; |
| * finallyPart: |
| * finally block |
| * ; |
| * A try statement consists of a block statement, followed by at least one of: |
| * 1. A set of on-catch clauses, each of which specifies (either explicitly or |
| * implicitly) the type of exception object to be handled, one or two |
| * exception parameters and a block statement. |
| * 2. A finally clause, which consists of a block statement. |
| * @description Checks that various valid variations of the try statement do not |
| * cause a compile-time error. |
| * @author rodionov |
| */ |
| |
| main() { |
| try { |
| throw ""; |
| } |
| on int catch (ok) {} |
| catch (ok) {} |
| finally {} |
| |
| try { |
| throw ""; |
| } |
| on int catch (ok, st) {} |
| catch (wtvr) {} |
| finally {} |
| |
| try { |
| throw ""; |
| } |
| on int catch (ok, st) {} |
| on String catch (ok, st) {} |
| |
| try { |
| try { |
| throw ""; |
| } finally {} |
| } catch (ok) {} |
| |
| try { |
| throw 1; |
| } |
| on int catch (x) {} |
| on double catch (x) {} |
| |
| try { |
| throw 1; |
| } |
| on int catch (x) {} |
| on num catch (x) {} |
| on Object catch (x) {} |
| } |