JAVA 异常

一,异常 :

什么是异常 :

程序生病了,非正常可以执行完毕|编译期间就检测出的问题

异常一旦出现: 1)程序无法执行 2)终止程序的继续执行,抛出异常的信息展示给程序猿

二,异常的体系 :

Throwable : 类是Java语言中所有错误和异常的超类。

/ \

Error Exception

  1. Error : 一般是由虚拟机生成并脱出的,不由程序猿控制

  1. Exception : 异常

  • CheckedException检查时异常|编译时异常 :

发生在程序需编译期间,如果程序猿不处理程序无法运行 ---->通过异常的处理方案(2种)

//java.io.FileNotFoundException文件没找到异常--->编译时异常
InputStream is = new FileInputStream("D://test.txt");
  • RuntimeException运行时异常 :

发生在程序运行期间,不处理程序终止执行 --->通过异常的处理方案(2种) | 增强程序健壮性if (推荐)

常见的运行时异常
  1. java.lang.NullPointerException :空指针异常

  1. java.lang.ArrayIndexOutOfBoundsException :数组下标越界异常

  1. java.lang.ArithmeticException:数学异常

  1. java.lang.ClassCastException:类转换异常

三,异常处理方案 : *****

异常抛出 :

throws 可以实现抛出多个异常,跑到上一层,由调用者解决处理

异常捕获 :

try{
有可能出现异常的代码段;
}catch(异常类型 引用){
捕获了对应类型异常后执行的代码;
}.....
finally{
无论是否出现异常都会执行的代码段...
一般定义资源的关闭等代码;
}
       try {
            System.out.println("try开始了");
            //数学异常
            //检测到异常之后不再执行try后面的代码直接进入catch
            System.out.println(5/0);
            FileInputStream src=new FileInputStream("D:\\src.txt");
            System.out.println("try结束了");
        } catch (FileNotFoundException e) {
            System.out.println("FileNotFoundException");
            e.printStackTrace();
            System.out.println("getMessage====");
            System.out.println(e.getMessage());
        }catch(ArithmeticException e){
            System.out.println("ArithmeticException===");
            e.printStackTrace();
            System.out.println();
        }finally {
            System.out.println("不太饿,但是点了外卖的漂亮女人");
        }

  1. 如果try中的代码从上到下执行没有遇到异常,catch不会执行

  1. 如果try中代码一旦遇到异常,try后面的代码不再执行,从上到下执行catch判断哪一个catch所捕获的异常类型满足,执行对应的catch后的语句体

  1. 一个try后面可以接1~n个catch

  1. 接收异常类型范围较大的catch放在后面

四,自定义异常->了解

异常也是类,需要继承自异常体系

如果直接或者间接的继承自RuntimeException,当前异常类为运行时异常

如果直接继承自Exception,或者没有继承RuntimeException,继承了Exception其他子类,这样异常为一个编译时异常

throw制造异常

//继承了运行时异常,可以用简单的增强程序健壮性避免异常
class AgeException extends RuntimeException{
    public AgeException(){}
    public AgeException(String str){
        super(str);
    }
}
    public Student(String name, int age) {
        this.name = name;
        if(age<18){
            //要用throw抛出异常
            throw new AgeException();
        }
        this.age = age;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值