1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import org.aspectj.testing.Tester;
-
- public class TryCatchFinally {
- public static void main(String[] args) {
- Tester.checkEqual(m1(), "good");
- Tester.checkEqual(m2(), "good");
- Tester.checkEqual(m3(), "good");
-
- try {
- m1v();
- } catch (RuntimeException re) {
- Tester.event("main-caught");
- }
- Tester.checkAndClearEvents(new String[] {
- "caught", "finally", "main-caught"} );
- try {
- m2v();
- } catch (RuntimeException re) {
- Tester.event("main-caught");
- }
- Tester.checkAndClearEvents(new String[] {
- "caught", "finally", "main-caught"} );
-
- m3v();
- Tester.checkAndClearEvents(new String[] {
- "caught", "finally"} );
- }
-
- public static String m1() {
- try {
- throw new RuntimeException("hi");
- } catch (RuntimeException er) {
- throw er;
- } finally {
- return "good";
- }
- }
- public static String m2() {
- try {
- return m1() + "XXX";
- } catch (RuntimeException er) {
- throw er;
- } finally {
- return "good";
- }
- }
- public static String m3() {
- try {
- throw new RuntimeException("hi");
- } catch (RuntimeException er) {
- return "bad-c";
- } finally {
- return "good";
- }
- }
- public static void m1v() {
- try {
- throw new RuntimeException("hi");
- } catch (RuntimeException er) {
- Tester.event("caught");
- throw er;
- } finally {
- Tester.event("finally");
- }
- }
- public static void m2v() {
- try {
- throw new RuntimeException("hi");
- } catch (RuntimeException er) {
- Tester.event("caught");
- throw er;
- } finally {
- Tester.event("finally");
- }
- }
- public static void m3v() {
- try {
- throw new RuntimeException("hi");
- } catch (RuntimeException er) {
- Tester.event("caught");
- return;
- } finally {
- Tester.event("finally");
- }
- }
- }
|