好吧,我犯了罪,我写了太多这样的代码重构异常处理
try {
// my code
} catch (Exception ex) {
// doesn't matter
}
现在,我要清理/重构这个。
我正在使用NB 6.7,并且代码完成在第一次写入时工作正常,添加了所有异常类型等。一旦我完成了上述代码,请不要给予更多帮助。
你知道一种说NB的方法吗再次检查所有异常类型
,并提出处理它们的建议
并再次执行代码?
好吧,我犯了罪,我写了太多这样的代码重构异常处理
try {
// my code
} catch (Exception ex) {
// doesn't matter
}
现在,我要清理/重构这个。
我正在使用NB 6.7,并且代码完成在第一次写入时工作正常,添加了所有异常类型等。一旦我完成了上述代码,请不要给予更多帮助。
你知道一种说NB的方法吗再次检查所有异常类型
,并提出处理它们的建议
并再次执行代码?
当你问如何处理异常的建议...
有没有普遍接受的方式来处理它们。否则,你打赌java语言会隐含这种行为。
异常有两种存在形式,由设计:
在代码(方法或代码块)的每个级别,代码必须选择在发生任何异常(除未经检查的异常,可以完全忽略该处理)的情况下应该做什么。这是一个变化的责任的一种选择,没有决定适用于所有情况:
Java语言让你有特定语法使得更容易处理的例外,如特定异常的捕获,随后更普遍的...
通常情况下,你在你的架构考虑异常,做出一些设计决定。一些例子(以独特的方式混合):
问题是,你的抓包处理程序“处理”所有的异常,所以不需要Netbeans显示任何更多的提示。
如果你的异常处理程序已经是空的,并且你打算重构它们,你可以暂时删除它们。
提示:自动格式化您的代码,搜索try
并使用括号突出显示来找到匹配的catch
块。然后删除所有的处理代码。
之后,Netbeans将再次提出各种操作来处理可能出现的异常。注意:Netbeans的默认处理(即只是日志记录)并不总是最好的选择。
我只是提供了Eclipse的做法,并希望它有点similiar与NetBeans:
您可以保存现有的异常处理代码,将其粘贴到重构后。
编辑
汤姆关于RuntimeException的一个很好的注释。所以程序应该更好的是这样的:
这将保留运行您的异常处理例外(和子类型!)。
所以从
try {
Integer.parseInt("Force a RuntimeException");
myInputStream.close();
} catch (Exception oops) {
// catch both IOException and NumberFormatException
}
你去
try {
Integer.parseInt("Force a RuntimeException");
myInputStream.close();
} catch (IOException oops) {
// catch IOException
} catch (Exception oops) {
// catch NumberFormatException
}
(虽然你可以手动在这种情况下取代异常的NumberFormatException的,但它只是一个例子)
请注意,这对于任何'RuntimeException'都不起作用。 – 2010-01-15 11:14:50
PMD识别所有这些地方你有空catch
块(PMD实际上做得更多)。它有NetBeans集成,所以试试看。
确定所有与空catch
块的地方之后,你就必须要考虑每一个本身:
NullPointerException
,请添加null
检查。
请注意,这将不适用于任何'RuntimeException's。 – 2010-01-15 11:11:09