我们写的程序在运行的过程中,常常会发生异常,导致程序无法得到我们想要的结果,我们也不知道问题究竟出在了那里,但是学习了异常之后,就会发现有些异常是可以避免的,我们也可以知道其产生的具体原因,而将异常处理应用于我们所写的程序中,会使我们写的程序更具有高效性和健壮性。(图源网络,侵删哦)
1.异常概述
异常:在程序开发过程中,可能存在各种错误,有些错误是可以避免的,而有些错误时意想不到的,Java中把这可能发生的错误称为异常。
如图所示为异常类的继承关系:
2.异常的分类
Java中捕获的异常分为可控式异常和运行时异常。
1)可控式异常:通常是可以预知的错误,在程序编译时就可以对程序中的错误进行处理,并给出具体错误信息。
常见的可控式异常:IOException 、SQLException、ClassNotFoundException、NoSuchFieldException、NoSuchMethodException。
2)运行时异常:不能被编译器检测到的异常。
常见的运行时异常:IndexOutOfBoundsException、NullPointerException、ArithmeticException、illegalArgumentException、ClassCastException。
3.获取异常信息
4.处理异常
1)try-catch处理异常
2)try-catch-finally处理异常
3)try-finally处理异常
一般来说:
try和catch之间的 {} 中是需要正常处理但又可能发生过异常的语句;
catch之后()内是需要处理的异常类型;
catch之后 {} 是对程序发生的异常处理的语句;
finally后的{}内的语句,如果JVM不关闭,无论程序是否发生异常都会被执行。
***注意***
以下四种特殊情况,finally块不会被执行
*在finally语句中发生了异常
*在前面的代码里里使用了System.exit()退出程序
*程序所在的线程死亡
*关闭CPU
5.抛出异常
处理异常除了使用try-catch等外,还可以使用throws声明或throw语句抛出异常。
1)使用throws声明抛出异常
throws 用来标明一个成员函数可能抛出的各种“异常”。出现在方法的声明中。
2)使用throw语句抛出异常
throw : 在方法中,将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。
6.自定义异常
1)创建自定义异常,
创建自定义异常需要继承自Exception类,并提供一个含有String类型形参的构造方法,该形参就是异常的描述信息,该形参就是异常的描述信息, 可以通过getMessage()方法获得。
2) 使用自定义异常类
原文:https://www.cnblogs.com/ywqtro/p/11774340.html