/* * This file is part of the Jikes RVM project (http://jikesrvm.org). * * This file is licensed to You under the Eclipse Public License (EPL); * You may not use this file except in compliance with the License. You * may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php * * See the COPYRIGHT.txt file distributed with this work for information * regarding copyright ownership. */ class TestFinally { static int foo(int a, int b) { try { return a / b; } catch(Exception e) { return 1; } finally { return 2; } // not reached } static int foo1(int a, int b) { int c = 0; if (a > 0) { try { return a/b; } catch(Exception e) { c = 1; } finally { c = 2; } } else { return 0; } c = c + b; return c; } static Object lock = new Object(); static boolean foo2(int a) { synchronized(lock) { return foo2a(a) == 1; } } static int foo2a(int a) { return a+1; } static boolean foo3(int a, int b) { int c = 0; if (a > 0) { try { return a/b == 0; } catch(Exception e) { c = 1; } finally { int x = a >> 3; int y = b + 2; c = foo2a(y&(x & 0x77))-1; } } else { return false; } c = c + b; return c >= a; } static int foo4(int a, int b) { int x; try { return a/b; } catch (Exception e) { x = 10; } finally { try { x = b/a + 3000; } catch (Exception e) { x = b; } } return x; } public static void main(String[] args) { run(); } public static boolean run() { System.out.println("TestFinally"); System.out.println(foo(1,0)); System.out.println(foo1(1,0)); System.out.println(foo2(1)); System.out.println(foo3(1,1)); System.out.println(foo4(100,10)); System.out.println(foo4(0,10)); System.out.println(foo4(100,0)); try { System.out.println("hi"); // jsr } finally { System.out.println("bye"); } // ret return true; } }