最近在阅读《Java编程思想》的时候看到了书中对异常的描述,结合自己阅读源码经历,谈谈自己对异常的理解。首先记住下面两句话:

  除非你能解决(或必须要处理)这个异常,否则不要捕获它,如果打算记录错误消息,那么别忘了把它再抛出去。

  异常既代表一种错误,又可以代表一个消息。 

一、为什么会有异常

  这个问题其实不难理解,如果一切都按我们设计好的进行,那么一般(不一般的情况是我们设计的就是有缺陷的)是不会出现异常的,比如说一个除法操作:

public int div(int x,int y){  return x/y;
}

  当然我们设计的是除数不能为0,我们也在方法名上添加了注释,输出不能为0,如果用户按照我们的要求使用这个方法,当然不会有异常产生。可是很多时候,用户不一定阅读我们的注释,或者说,输入的数据不是用户主动指定的,而是程序计算的中间结果,这个时候就会导致除数为0的情况出现。

  现在异常情况出现了,程序应该怎么办呢,直接挂掉肯定是不行的,但是程序确实不能自己处理这种突发情况,所以得想办法把这种情况告诉用户,让用户自己来决定,也就是说程序需要把遇到的这种异常情况包装一下发送出去,由用户来决定如何处理。

  异常表示着一种信息。熟悉EOFException的程序员一般都会了解,这个异常,表示信息的成分大于表示出现了异常,不熟悉的参照我之前的博客:http://www.