// Copyright (c) 2012, 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. // Dart test program for testing try/catch statement without any exceptions // being thrown. // VMOptions=--optimization-counter-threshold=10 --no-background-compilation import "package:expect/expect.dart"; abstract class TestException { String getMessage(); } class MyException implements TestException { const MyException([String message = ""]) : this._message = message; String getMessage() { return _message; } final String _message; } class MyParameterizedException implements TestException { const MyParameterizedException([String message = ""]) : this._message = message; String getMessage() { return _message; } final String _message; } class StackTrace { StackTrace() {} printStackTrace(TestException ex) { print(ex); } } class Helper { static int test1(int i) { try { int j; j = f2(); j = f3(); try { int k = f2(); f3(); } on MyException catch (ex) { int i = 10; print(i); } on TestException catch (ex) { int k = 10; print(k); } try { j = j + 24; } on TestException catch (e) { i = 300; print(e.getMessage()); } try { j += 20; } on TestException catch (e) { i = 400; print(e.getMessage()); } try { j += 40; } on TestException catch (e) { i = 600; print(e.getMessage()); } try { j += 60; } on TestException catch (e, trace) { i = 700; print(trace.toString()); print(e.getMessage()); } try { j += 80; } on MyException catch (e) { i = 500; print(e.getMessage()); } } on MyParameterizedException catch (e, trace) { i = 800; print(trace.toString()); rethrow; } on MyException catch (exception) { i = 100; print(exception.getMessage()); } on TestException catch (e, trace) { i = 200; print(trace.toString()); } finally { i = 900; } return i; } static int f2() { return 2; } static int f3() { int i = 0; while (i < 10) { i++; } return i; } } class TryCatchTest { static testMain() { Expect.equals(900, Helper.test1(1)); } } main() { for (var i = 0; i < 20; i++) { TryCatchTest.testMain(); } }