天天看点

Java 异常机制

异常的概念: 所谓的异常通俗讲就是由于种种原因 导致程序没有按照正常的逻辑执行。

             而这些因素有些是可以预料和排除的 而有些则是致命和不可预知

             Java为尽可能降低这些因素对程序的影响推出了这套异常机制

             通过异常类将错误的信息返回 根据异常信息恢复正常逻辑或讲信息输出

     作用:   增强程序的健壮性 也便于编程人员发现解决问题

异常分类:   错误 和 异常(运行异常 和检查异常)其实这种分发有点勉强和歧义

            (错误 也是运行异常的一种只是字面上区别(主要用于严重错误)

             Error   RuntimeException  Exception Throwable 

             其中Error  RuntimeException 属于运行异常

             Exception  Throwable 属于检查异常 其中Throwable 是所有异常类的父类

各类异常区别 

          :  运行异常  是在程序运行期间发生的异常  

                       不需要在程序中显示捕获(try catch)

             检查异常  则是在编译期间(写程序时)自动检查

                       一旦方法中有异常抛出则需要捕获或 抛出否则编译不通过

                       这个便是两个异常本质区别 其它基本没有什么区别  

自定义异常 : 继承 Throwable  Exception  RunTimeException  Error

异常链接   : 当捕获某一个异常之后需要抛出另外一个新异常而又想保存上一个异常的信息

             可以通过把上一个异常赋值给新异常的属性cause 则在输出新异常的同时

             也会把上一个异常输出(Throwable中有这个属性 并提供了对应的构造器构造器或)

             如

                public class TestException extends Exception {

                    publicTestException(Throwable e){

                        super(e);

                    } 

                }

                try{

                   .....

                }catch(NuLLPointException e){

                     throw newTestException(e);

                     或

                     throw new newTestException().initCause(e);

更新异常堆栈 : e.fillInStackTrace() 这个方法主要用于当捕获一个异常

                并抛出这个异常 可以通过这个方法将异常抛出点更新为当前行

try-catch-finally : 

  try{

                     .....异常监视区

                    }catch(NuLLPointException e){

                       处理异常

                    }finally{

                       无论是否有异常 都要执行代码块

                       也可以这样用try{}finally{}

                    }

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍