异常处理try...catch...finally中的finally关键字相关问题

1. 下面的代码 finally 会不会执行,如果会是在 return 之前还是之后?
public void Test(){
    int a = hello();
    System.out.println("a = " + a);
}

public int hello(){
    int a = 10;
    try{
        System.out.println("a = "+ a);
        return a++;
    } catch(Exception e){
        e.printStackTrace();
    } finally{
        System.out.println("a = " + a);
        a++;
        System.out.println("a = " + a);
    }
    return 5;
}

【答】:finally 语句块无论何时都会执行并且是在 return 之前执行

2. java 中的 final、finally 与 finalize()的区别

  • final 修饰的类不可继承,final 修饰的方法不能重写,final 修饰的变量是常量。
  • finally 是在处理异常时的一个关键字,一般 try 语句可以与 catch 连用,也可以与 finally连用,也可以三个一起连用。finally 代表无论何时(是否出现异常)其中的代码都会被执行到,一般用于关闭一些耗性能的资源,如数据库的连接。
  • finalize()是Object类的一个方法,是由protected修饰的,所以我们的子类可以重写finalize()方法。它的作用就是 java 在执行垃圾回收时对要回收的对象之前会主动调用此方法,所以,可以在此方法中定义一些回收或清理内存、资源的操作。

猜你喜欢

转载自www.cnblogs.com/EaTerLeader/p/11078321.html
今日推荐