异常处理:直接引用教授,"虽然Exception类可以直接在程序中使用,但最好使用特定的异常类。"他没有多大意见,但我有兴趣了解别人的想法,如果他是对的,为什么?
答案 0 :(得分:6)
您的教授可能意味着抛出SomeTypeException
比向Exception
投掷一些短信更好。
为什么使用类型化异常更好?
您可以捕获特定类型的异常。
try {
...
} catch(ExceptionType1 e) {
...
} catch(ExceptionType2 e) {
...
}
方法抛出的异常类型为程序员提供有关该方法的有价值信息。
void someMethod() throws SQLException, ParserException { ... }
比以下更有意义:
void someMethod() throws Exception { ... }
答案 1 :(得分:4)
他的意思是没有什么能阻止你做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();
的情况,然后尝试解析字符串以尝试理解它,并相信我,所有必须做这样的事情都不是很有趣
答案 2 :(得分:1)
我的两分钱:
异常,与API的任何其他部分一样,应该尽可能具体。这与您使用String
,Integer
或Date
而非普通Object
的特定类型的原因相同。