1. 异常的作用:程序发生 异常事件之后,为我们输出详细的信息,程序员通过这个信息,可以对程序进行一些处理,是程序更加健壮。
2. 异常的层次结构
3. 处理异常的两种方式
① 声明抛出 throws:在方法声明的位置上抛出异常
② 捕捉 try...catch
throws的小例子:
try...catch语法:
① catch语句块可以写多个
② catch可以捕捉多个异常,但是必须从上到下catch,必须从小类型到大类型进行捕捉
③ try...catch中最多之执行一个catch语句块,执行结束后,try...catch...就结束了
4. 异常中的两个方法printStackTrace()和getMessage()
printStackTrace():① 该方法用来打印异常堆栈信息
② 一般情况下都用该方法调试程序
getMessage(): 也可以打印异常,但是只能打印基本信息,不够详细,一般不使用
5. finally 语句块
① finally语句块可以直接和try语句块连用,try...finally
② try...catch...finally也可以
③ 在finally语句块中的代码是一定(即使是在try中return;或者try中发生异常)会执行的,只有一种情况下,finally是不会执行的(在finally语句块执行之前,退出JVM,即执行System.exit(0);语句)。
④ 为了保证某资源一定会释放,一般在finally语句块中释放资源
6. 自定义异常
如果自定义编译时异常,则继承Exception类
如果自定义运行时异常,则继承RuntimeException类
一般在自定义异常中,只写两个构造方法即可,一个为无参构造;一个为带一个字符串类型的参数,并在方法体中调用父类的有参构造方法,该参数在创建异常对象时,传入异常信息。