异常处理

异常处理

异常的分类

a0e35c474a310f5b3adf992645c7a6235f2.jpg

Throwable是所有异常类的父类派生了两大类Error与Exception

Error是用来描述java运行系统中的类部错误像内存溢出等

Exception类称为非致命性类,可通过捕捉处理程序使其继续执行

Exception又分为运行异常(RuntimeException和其下子类)和其他类属于编译时异常

JVM处理异常方式

Main方法收到问题后又两种处理方式

第一种程序种有捕捉处理程序去处理

第二种程序种没能处理,就会让JVM来处理(将异常名称,异常信息,异常出现的位置打印在控制台,同时停止运行)

381e7d45aee5f28b036cbfbd7189f816b78.jpg


处理异常方法

try...catch代码块

当try中代码出现异常时中断就会产生相对应的异常类对象传入catch中并开始执行catch中的代码


class test public static void main(String[] args) { int[] arr = {1,2,3}; try { System.out.println(arr[3]);    }catch (ArrayIndexOutOfBoundsException e) {// 接收来自try中异常产生的参数       System.out.println(e.getMessage());// 打印异常参数信息       System.out.println(e);// 异常名加异常信息       e.printStackTrace();// 异常名加异常信息加异常位置    } } }
结果: 3 java.lang.ArrayIndexOutOfBoundsException: 3 java.lang.ArrayIndexOutOfBoundsException: 3        at first.a.test.main(test.java:13)

使用多个catch可以捕捉不同种类的异常,但一般用它们的父父类Exception就好了

try{
}catch(ArrayIndexOutOfBoundsException e){
}catch(ArithmeticException e){
}

完整的异常处理语句要加上finally无论有无异常都会执行,就算try代码块提前收到返回值即函数结束,它仍然会把finally执行之后再结束。除非在之前虚拟机被关闭System.exit()或者它本身有异常以及程序所在线程死亡,这些种情况下才不会被执行

抛出异常

throws通常被应用在声明方法时来指定抛出的异常

调用声明了异常的方法就会有编译异常

需要用捕捉语句对调用方法的语句进行处理

或者继续往上抛,即包含此语句的方法

class test{    static void ff(int a) throws Exception{    if(a==0){      throw new Exception("出错了");    }  }  public static void main (String[] args) throws Exception{      ff(0);// 会有异常,抛给main方法。也可以用捕捉语局处理    
} }


自定义异常类

继承Exception并构造方法传入参数信息 重写了构造器后就要自己把调用父类构造器添上
public class MyException extends Exception{  public MyException(String message){    super(message);  }}// 然后就可以使用此异常类,和上面使用一样


本文分享自微信公众号 - IT那个小笔记(qq1839646816)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

posted @ 2019-07-12 20:55  木瓜煲鸡脚  阅读(34)  评论(0)    收藏  举报