finally的特点以及面试题

1,finally的特点
被finally控制的语句体一定会执行,特殊情况:在执行finally之前,jvm退出了,例如System.exit(0)
2,finally的作用
用于释放资源,在IO操作和数据库操作中会见到
3,finally相关的面试题
(1)final和finally的区别
final是关键字
final修饰的类不可以被继承,修饰的方法不可以被重写,修饰的变量只能被赋值一次。
(2)finally用于异常处理try…catch中,在一般情况下,finally控制的语句体一定会执行
4,如果catch里面有return语句,请问finally的代码还会执行吗?如果会请问是在return前还是在return后
此情况下,finally的代码还会执行,在return前执行
例如:
public class FinallyDemo {
public static void main(String[] args){

// method1();
int result=method2();
System.out.println(result);
}

/**
 * 编码原则:
 * 每个方法一定要有注释,每个方法尽量要有try...catch,名称书写规范
 */


public static void method1(){
    int[] array=null;
    try {
        array=new int[]{1,2,3};
        System.out.println(array[4]);
    }catch (Exception e){
        //记录异常
        e.printStackTrace();
    }finally {
        //finally语句块,不论是否发生异常,finally语句块都会执行到
        System.out.println("数组的长度"+array.length);


        //如果finally里面又发生了异常,同样可以try..catch

// try {
// int a=10;
// int b=0;
// int sun=a/b;
// }catch (ArithmeticException e){
//
// }

    }
    System.out.println("hello world");
}

public static int method2(){
    int result=0;
    int array[]=null;
    try{
        array=new int[]{1,2,3};
        System.out.println(array[3]);
    }catch (Exception e){
      e.printStackTrace();
      return 10;
    }finally {
        result =array.length;
        System.out.println("finally语句块被执行了");
    }
    return result;
}

}
5,请注意编码原则
每个方法一定要有注释,每个方法尽量使用try…catch形式,名称要书写规范
6,异常注意事项
(1)子类重写父类方法时,子类的方法必须抛出相同的异常或父类异常的子类
(2)如果父类抛出了多个异常,子类重写父类时,只能抛出相同的异常或者是他的子集,子类不能抛出父类没有的异常
(3)如果被重写的方法没有异常抛出,那么子类的方法绝对不可以抛出异常,如果子类方法内有异常发生,那么子类只能try,不能throws

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值