本帖最后由 胡永城 于 2013-12-23 23:56 编辑
先执行的return 在执行finally
以下为代码验证:
- public class Test7 {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- // 定义一个作为标示的值,在打印的字符串中,谁的j值小,谁首先运行
- int j;
- for (j = 0; j < 3; j++) {
- try {
- System.out.println("break:j= "+(++j));
- break;//验证break与finally的执行顺序。
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- System.out.println("finally:j= " + (++j));
- }
- }
-
- // 定义一个作为标示的值,在打印的字符串中,谁的i值小,谁首先运行
- int i = 0;
- // // 当代码块可能产生异常时,用try {} catch () {}语句包裹。
- try {
- System.out.println("try : i = " + (++i));
- test(1, 0);
- } catch (ArithmeticException e) { // 捕获ArithmeticException异常对象,在代码块中处理
- System.out.println("return : i = " + (++i));
- return;
- } finally {
- System.out.println("finally : i = " + (++i));
- }
- }
- // 定义一个可能会产生异常的函数,并抛出交由调用者处理
- private static int test(int a, int b) throws ArithmeticException {
- return a / b;
- }
- }
复制代码 |