| // 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) {} |
| } |