在《Think in java》中是这样定义异常的:异常情形是指阻止当前方法或者作用域继续执行的问题。异常包括错误,但是不仅仅是错误,比如使用0做除数时就会产生异常,打开一个没有的文件的时候也会产生异常。 那么什么时候才会出现异常呢?只有在你当前的环境下程序无法正常运行下去,这时它所就会从当前环境中跳出,并抛出异常。
其实异常就是你的程序无法正常执行了。
异常主要分为两类:CheckedException 受查异常(编译期异常)【继承自Exception类】
UncheckedException 非受查异常(运行时异常)【继承自RuntimeException类】
一般而言,处理异常的方式通常有两种:
①提前声明抛出异常
②捕获异常并处理
提前声明将要抛出何种类型的异常,是向上抛出的,最终由其方法的调用者来处理异常。因此在我们基础比较好的情况下,提前知道某段代码可能会出现某种异常,直接try catch该异常就可以了,这种方式才是一个真正程序员解决异常的方式。
try{
//有可能出现异常的语句
}catch(Exception e){//异常的类型和接受对象
}finally {
//异常的出口,最后执行且一定被执行
}
但是,很多人都忽略了以下四种特殊情况下,finally块不会被执行!
1.在finally语句块中发生了异常。
2.在前面的代码中使用了System.exit(int)已退出程序。
3.程序所在的线程死亡。
4.关闭了CPU。