好的,我犯了罪,我写了太多像这样的代码
try {
// my code
} catch (Exception ex) {
// doesn't matter
}
现在我要清理/重构这个。
我正在使用NB 6.7并且代码完成在第一次写入时工作正常,添加了所有异常类型等。一旦我完成了上面的代码,NB就不会给予更多帮助。
您是否知道如何说NB再次查看所有异常类型并提出处理它们的提议并再次执行代码?
答案 0 :(得分:4)
PMD标识所有这些您有空catch
块的地方(PMD实际上做得更多)。它有NetBeans集成,所以试一试。
在识别出所有空catch
块的地方后,你必须自己考虑每个地方:
NullPointerException
,请改为添加null
支票。答案 1 :(得分:3)
问题是,你的catch-all处理程序“处理”所有异常,因此Netbeans不需要再显示任何提示。
如果你的异常处理程序已经为空并且你打算重构它们,你可以暂时删除它们。
提示:自动格式化代码,搜索try
并使用括号突出显示找到匹配的catch
块。然后删除所有处理代码。
之后,Netbeans将再次提出各种行动来处理可能的例外情况。
PS:注意,Netbeans的默认处理(即仅记录)并不总是最佳选择。
答案 2 :(得分:1)
我可以提供eclipse方法,并希望它与netbeans有点类似:
您可以保存现有的异常处理代码,以便在重构后粘贴它。
修改强>
Tom对RuntimeException有很好的评论。所以程序最好看起来像这样:
这将保留您对RuntimeExceptions(和子类型!)的异常处理。
所以来自
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手动替换Exception,但这只是一个例子)
答案 3 :(得分:1)
当您询问有关如何处理例外的提案时......
没有普遍接受的方法来处理它们。否则,你敢打赌java语言会隐含这种行为。
例外情况有两种形式:
在每个级别的代码(方法或块)中,代码必须在发生任何异常时选择要执行的操作(除了未经检查的异常,可以完全省略处理)。这是一个不同的责任选择,没有任何决定适用于所有情况:
java语言允许您使特定语法更容易处理异常,例如特定异常的捕获遵循更一般的异常...
通常,您会考虑架构中的异常,并做出一些设计决策。一些例子(以独特方式混合):