Java核心API之异常

1.异常的概念:

异常是指阻止当前方法或作用域继续执行的问题,发生错误,正常执行被中断

例如:正常行车过程应该是车出发前检查-------行车-----到达目的地,但是中途有可能出现堵车、撞车等不在计划之内的情况,而出现这种情况之后我们需要等待交警、保险公司、修车等一系列事情的完成后才能继续开车上路,即:

代码编译---------程序运行---程序执行成功

                 出错

                      ---错误信息交给一个合适的接收者,知道如何处理----异常处理   

出现异常后,如果该异常是Java已经定义好的异常类型,Jvm就会在堆上new一个新的异常对象然后将异常交给异常处理机制程序终止,程序的执行权到达异常处理机制,异常处理分为直接处理异常(try{ 异常代码 }catch(exception e){ 异常处理 })和抛出异常(交给调用者处理、最上层是jvm)

出现异常后,jvm中会产生:

  1. 在堆上new出异常对象
  2. 终止当前执行,弹出当前异常对象的引用
  3. 异常处理机制接管程序的执行权
  4. 异常可以看成是一种内建的恢复系统,在程序中拥有恢复点

2.异常的分类

Throwable是所有异常类的超类

        Error : 跟jvm相关的问题,环境问题

        Exception  :程序错误

               运行时异常:只有程序运行时才能看出

                      空指针NullPointerException,数学异常ArithmeticException,数组下标越界ArrayIndexOutOfBoundsException

               检查时异常:代码调用,被调用方申明风险

//数学异常
	  int i = 5/0;
	  
	  //空指针异常
	  String str = null;
	  System.out.println(str.equals("abc"));
	  
	  //数组下标越界异常
	  int[] j  = {1,2,3};
	  System.out.println(j[3]);

 

 

 

      

 

3.异常的捕获

异常处理5个关键字

try 、catch 、finally、throw、throws

最大捕获catch(exception e)   异常具体化

顺序执行  如果最大捕获在前  其他catch则不再作用

finally最后必定会执行,哪怕在finall之前有return

return代表代码块的最后一句

如果system.exit(0)在finally之前则finally不再执行

finally中发生异常的话  程序会被中断并打印异常堆栈

 

4.异常抛出

当前位置不能处理则抛出给上级

异常堆栈,异常轨迹

thow:手动抛出  thows:声明该方法会抛出异常

抛出运行时异常:调用方不用做处理

抛出检查时异常:调用者一定要做处理

方法后可声明抛出多个异常

 

 

  1. 异常抛出案例

 

 

6.异常小结

常用两个异常构造方法:无参构造方法,有参构造方法(参数为指定异常信息)

getMassage方法获取异常信息  printStackTrace打印异常堆栈

       方法重写  1.父类没有异常,那子类也应该没有异常的抛出

                       父类有异常,那子类可以没有异常的抛出

                     2.子类可以抛出父类异常的子集,不能抛出比父类异常大的异常类

 

7.自定义异常

一:创建一个类继承exception或其子类

二:添加构造方法

三:在一个方法中使用throw抛出异常  方法后throws向调用方抛

四:在另一个方法中捕获并处理异常

 

 

猜你喜欢

转载自blog.csdn.net/star_in_shy/article/details/82258117