【发布时间】:2016-01-08 17:37:21
【问题描述】:
异常处理:直接引用一位教授的话,“虽然可以在程序中直接使用异常类,但最好使用特定的异常类。”他没有详细说明,但我很想知道其他人的想法,如果他是对的,为什么?
【问题讨论】:
-
教授永远是对的,相信他们。如果有任何疑问在课后抓住他们,他们会很乐意为您效劳。
标签: java exception exception-handling
异常处理:直接引用一位教授的话,“虽然可以在程序中直接使用异常类,但最好使用特定的异常类。”他没有详细说明,但我很想知道其他人的想法,如果他是对的,为什么?
【问题讨论】:
标签: java exception exception-handling
我的两分钱:
与 API 的任何其他部分一样,异常应该尽可能具体。这与您应该使用特定类型作为String、Integer 或Date 而不是普通的Objects 的原因相同。
【讨论】:
您的教授可能的意思是,发送SomeTypeException 比发送一些短信Exception 更好。
为什么使用类型化异常更好?
您可以捕获特定类型的异常。
try {
...
} catch(ExceptionType1 e) {
...
} catch(ExceptionType2 e) {
...
}
方法抛出的异常类型为程序员提供了有关该方法的有价值的信息。
void someMethod() throws SQLException, ParserException { ... }
比以下更有意义:
void someMethod() throws Exception { ... }
【讨论】:
他的意思是没有什么能阻止你做throw new Exception( "this happened" );和throw new Exception( "that happened" );
但最好的做法是使用throw new ThisException() 和throw new ThatException();
那是因为你可以在其他地方catch( ThisException e ) 处理它,确切地知道发生了什么,而不必catch( Exception e ) 想知道它是因为“这个”发生了,还是因为“那个”发生了。
我曾经遇到过必须执行String s = e.getMessage(); 然后尝试解析字符串以尝试理解它的情况,相信我,做这样的事情一点也不好玩。
【讨论】:
Exception catch 块,而是使用特定的异常捕获块,所以真正的答案过于宽泛且基于意见。