// 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(); }