黑马程序员_异常体系

一、异常的概述

       1、异常:程序出现了不正常的情况

       2、异常分为哪两种情况

        编译时期异常:代码本身没有语法错误,但是会出现报错的情况

        运行时期异常:代码在编译期间是看不出来问题的,但是程序一
                              运行就会出现错误

 

二、异常的体系结构Throwable

         1、异常体系之Error描述(严重问题)
                同常代码出现重大问题,比如内存溢出,运行的类不存在,这些异常不需要处理,需要修改代码。


         2、异常体系之Exception(不严重)

               编译期间异常:需要进行处理(二种方式:捕获异常和抛异常)

                运行期间异常:这个不需要处理,需要修改代码。

三、jvm的默认处理和自己处理异常

       1、自行处理异常基本格式

           叫做捕获异常

              基本格式:try{可能发生问题的代码}
             catch(异常的类名  变量名){
                      异常处理的代码
              }

 

 

四、代码中出现了多个异常怎么处理
注意:在异常处理中,假如try里面有多个可能出现问题的代码,如果try里面第一个有问题的代码
出现问题了,这个时候代码直接走到catch中,try第一个异常之后的代码就不会执行了。


技巧:如果异常报了多个错误的行号的话,要找第一个

 

五、多个catch的顺序问题

针对多个异常,写一个try的代码,catch里异常类名会不会有顺序问题?
异常是平级关系的话,catch无顺序
异常是具有子父类关系的时候,父类一定要放在最后。


注意:异常或者错误,都是以他们所在体系的父类作为后缀。
 XxxException
 XxxError

 

六、异常处理中JDK7的新特性

理解异常在JDK1.7之后的新特性
格式 :

catch (异常1 | 异常2|异常3...变量名)
一个catch中可以用或链接多个异常类。


 

七、Throwable的几个方法和标准catch代码

       public void printStackTrace();
       把错误信息显示在控制台


      try{可能发生问题的代码}
             catch(异常的类名  变量名){
           变量名.printStackTrace
          }
 

八、finally概述和简单使用
        finally {}  大括号里一般写的是释放资源的代码

             注意:finally里边的代码一定会执行

        final,finally,finalize的区别。
         final 是一个关键字
         它修饰的类不能被继承
         它修饰的方法不能被重写
          它修饰的变量,就具备了常量的特性。


         finally
           它是异常处理的一部分,finally里面的代码永远被执行
           但是有一个特殊情况,在finally执行之前就退出了虚拟机

         finalize
           它是Object类中垃圾回收器的方法


      2:finally里面的代码 会永远执行。但是有一个特殊情况:在代码执行到finally之前,jvm就退出了。
    
九、把异常抛出处理
异常的处理方式二种:一种捕获异常,另一种就是抛出throw 和throws

          throw 和throws的区别
          throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)
          语法:[(修饰符)](返回值类型)(方法名)([参数列表])[throws(异常类)]{......}
            public void doA(int a) throws Exception1,Exception3{......}
         throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。
         throws语句用在方法声明后面,表示再抛出异常,由该方法的调用者来处理。
         throws主要是声明这个方法会抛出这种类型的异常,使它的调用者知道要捕获这个异常。
         throw是具体向外抛异常的动作,所以它是抛出一个异常实例。
         throws出现在方法函数头;而throw出现在函数体。
         throws表示出现异常的一种可能性,并不一定会发生这些异常;throw则是抛出了异常,执行throw则一定

        抛出了某种异常。
十、自定义异常:

     就是定义一个类去继承Exception或RuntimeExcepton.

    开发中一般继承RuntimeExcepton.

     自定义的类继承了Exception ,一旦方法内部抛异常了,方法必须throws,而且在main方法中调用方式时是必须需要处理的。

    自定义的类继承了RunntimeException,及时方法内部抛异常了,方法也不需要抛异常,并且main方法中调用方法也不需要处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值