异常处理
异常处理
异常的分类

Throwable是所有异常类的父类派生了两大类Error与Exception
Error是用来描述java运行系统中的类部错误像内存溢出等
Exception类称为非致命性类,可通过捕捉处理程序使其继续执行
Exception又分为运行异常(RuntimeException和其下子类)和其他类属于编译时异常
JVM处理异常方式
Main方法收到问题后又两种处理方式
第一种程序种有捕捉处理程序去处理
第二种程序种没能处理,就会让JVM来处理(将异常名称,异常信息,异常出现的位置打印在控制台,同时停止运行)

处理异常方法
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();// 异常名加异常信息加异常位置}}}结果:3java.lang.ArrayIndexOutOfBoundsException: 3java.lang.ArrayIndexOutOfBoundsException: 3at 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源创计划”,欢迎正在阅读的你也加入,一起分享。

浙公网安备 33010602011771号