异常就是 程序运行中所发生的的不正常事件,导致程序中断
java中处理异常是通过5个关键字 : try , catch,finally, throw, throws
这里先说说异常处理 两种方式
1. 使用try-catch块捕获异常
2. 通过throws声明异常 ,让上一级调用者处理异常 main()方法声明的异常会有虚拟机处理
先看try-catch块捕获异常
try-catch程序块的执行流程比较简单 ,首先执行 的是try语句块中的语句 这时会有三种情况
1. try块中的语句没有异常 就会正常执行 忽略catch中的语句
2. try块中出现异常 并且异常和catch中声明的异常类型匹配 就会忽略try中剩余的语句 执行catch中的异常 ,匹配是指catch声明的异常和发生的异常的 类型一致或是他的父类
3. try中出现异常,并且异常和catch中申明的异常类型不匹配,这时程序就会中断
如图:
既然现在能捕获到异常 ,接下来看看怎么处理呢
在catch块中可以加入用户自定义处理信息 也可以调用异常对象的方法输出异常信息 常用的方法有一下两种:
1. void printStackTrace() 输出异常的堆栈信息 堆栈信息包括程序运行到当前类的执行流程,他将输出从方法调用处到异常抛出处的方法调用序列
2. String getMessage() 返回异常信息的描述字符串 是printStackTrace()输出信息的一部分
但是,有这么一种情况,无论发生不发生异常 都需要执行一段代码 该怎么办呢 只需要在 catch块后添加 finally块
finally块中的代码 是无论程序是否发生异常都会执行的一段代码 只有一种情况不会执行 遇到虚拟机终止 System.exit(1); 这是唯一终止的情况不会有第二种
捕获异常这里就说完了
现在说说声明异常:
两个关键字 throws 声明异常 throw 抛出异常
直接上图吧 这里就不详细说了 :