java中异常

1、Error:由虚拟机JVM引发的异常,是程序我发处理的错误。

2、 Exception:程序本身可以处理的异常。

3、异常处理总结:

  • try块,异常捕获,如果没有catch块,必须跟一个finally块;
  • catch块,用于处理try捕获的异常;
  • finally块,无论是否捕获或者处理异常,finally块中的内容都会被执行。当try块或者catch块遇到return语句时,finally块语句将在方法返回之前执行。

4、一下几种情况,finally块将不会被执行

a.在finally语句块第一行发生异常;

package exception;

public class TryDemo {

    public static void main(String[] args) {
        int i = 19;
        try{
            i = i/0;

        }catch (Exception e){

        }finally {

            i = i /0;//下面的打印不会执行
            System.out.println("111111111");
        }
    }
}

b.在前面的代码中用了System.exit(int)已退出程序,exit是带参函数;若该语句在异常语句之后,finally会执行。

package exception;

public class TryDemo {

    public static void main(String[] args) {
        int i = 19;
        try{
            System.exit(1);//这行打印不执行,很好理解,程序没发生异常的时候就退出
            i = i/0;
//            System.exit(1);//在这行打印可以执行
        }catch (Exception e){

        }finally {
            System.out.println("111111111");
        }
    }
}

c.程序所在的线程死锁;

d.关闭CPU。

5、一个需要特别注意的点:

当try语句和finally语句都有return语句的时候,在try块的方法返回之前,会去执行finally语句中的内容,并且try块的return将不被执行;

package exception;

public class TryDemo {

    public static void main(String[] args) {
        int i = find();
        System.out.println(i);
    }

    private  static  int find(){
        int i = 19;
        try{
            i = i/0;
            System.out.println("111");//不执行
            return i;//不执行
        }catch (Exception e){
            System.out.println("22222");//1、先执行
            return 11;//2、在执行
        }finally {
            return  22;//3、最后执行
        }
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值