| // 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. |
| // Dart test program for testing throw statement |
| |
| import "package:expect/expect.dart"; |
| |
| class MyException { |
| const MyException(); |
| } |
| |
| class OtherException { |
| const OtherException(); |
| } |
| |
| class RethrowTest { |
| late MyException currentException; |
| |
| void throwException() { |
| currentException = new MyException(); |
| throw currentException; |
| } |
| |
| void testRethrowPastUncaught() { |
| try { |
| try { |
| try { |
| throwException(); |
| Expect.fail("Should have thrown an exception"); |
| } catch (e) { |
| Expect.equals(true, identical(e, currentException)); |
| rethrow; |
| Expect.fail("Should have thrown an exception"); |
| } |
| } on OtherException catch (e) { |
| Expect.fail("Should not have caught OtherException"); |
| } |
| } catch (e) { |
| Expect.equals(true, identical(e, currentException)); |
| } |
| } |
| |
| void testRethrow() { |
| try { |
| try { |
| throwException(); |
| Expect.fail("Should have thrown an exception"); |
| } catch (e) { |
| Expect.equals(true, identical(e, currentException)); |
| rethrow; |
| Expect.fail("Should have thrown an exception"); |
| } |
| } catch (e) { |
| Expect.equals(true, identical(e, currentException)); |
| } |
| } |
| } |
| |
| main() { |
| RethrowTest t = new RethrowTest(); |
| t.testRethrow(); |
| t.testRethrowPastUncaught(); |
| } |