重构异常处理

Pet*_*Mmm 5 java refactoring netbeans exception-handling

好吧我犯了罪,我写了太多像这样的代码

try {
   // my code
} catch (Exception ex) {
   // doesn't matter
}
Run Code Online (Sandbox Code Playgroud)

现在我要清理/重构这个.

我正在使用NB 6.7并且代码完成在第一次写入时工作正常,添加所有异常类型等.一旦我完成了上面的代码NB就不提供更多帮助.

你知道一种方法可以说NB再次查看所有Exception类型并提出处理它们并再次完成代码的建议吗?

KLE*_*KLE 1

当您寻求有关如何处理异常的建议时......

没有普遍接受的方法来处理它们。否则,java 语言肯定会隐含这种行为。

  • 异常并不是一种必须处理的低级约束,直到编译器足够智能为止。
  • 异常是一种高级语言构造,用于表达语义“发生了异常情况,您不想将其处理与常规代码混合;您更喜欢在特定代码中处理它”。

根据设计,异常以两种形式存在:

  • 必须在每个可以抛出检查异常的方法中明确显示检查异常。
  • 未经检查的异常(RuntimeException 或 Error 的子类)通常是隐式的。

在代码的每个级别(方法或块),代码必须选择在发生任何异常时要做什么(除了可以完全省略处理的未经检查的异常)。这是一种不同的责任选择,没有对所有情况都有效的决定:

  • PROCESS:捕获它并完全处理它(调用代码通常不知道发生了什么)。当前方法需要有责任。为开发人员记录堆栈跟踪可能很有用。
  • STEP:捕获它,执行与本地代码相关的处理步骤,然后重新抛出它(或者以原始异常为原因重新抛出另一个异常)。
  • IGNORE:只是让它由调用代码负责。

java 语言允许您拥有特定的语法,从而更容易处理异常,例如捕获特定异常后跟随更通用的异常......


通常,您会考虑架构中的异常,并做出一些设计决策。一些例子(以独特的方式混合):

  • 选择让一层处理较低层中抛出的所有异常(例如:事务服务):为开发人员记录日志,为用户定位一些全局信息......
  • 让一些异常进行一些方法调用,直到到达对处理它有意义的代码(例如,根据您的异常,您可以重试完整操作,或通知用户...)
  • ETC。