为什么不鼓励抛出泛型(java.lang.Exception)异常,当它通常足以处理方法中的大多数条件失败时?我理解如果一个方法可以抛出多种类型的异常,那么抛出异常的特定子类可能会稍微澄清处理,但在一般的失败/成功情况下,我认为Exception的功能绰绰有余.
G_H*_*G_H 20
问题是它Exception也是超类RuntimeException,它包含一些不应被捕获的东西,因为它表明编程存在问题,而不是由上下文引起的异常情况.在正常情况下,您不希望捕获BufferOverflowException或UnsupportedOperationException.此外,抛出单独的Exception类型可以让调用代码控制如何处理每个类型.使用新的多捕获功能在Java 7中减少了Boilerplate.
如果抛出更多特定异常,则不会阻止任何调用代码在一个Exceptioncatch块中处理所有异常.更具体的是更多地记录发生了什么类型的错误,使程序员更容易单独处理它们.
此外,通过抛出"异常"本身,您基本上告诉调用者您的代码,他们不能排除任何类别的异常.一个IOException可能发生的,因为可能在NumberFormatException等