Java 避免使用异常作为流控制

Java 避免使用异常作为流控制,java,coding-style,code-cleanup,Java,Coding Style,Code Cleanup,我有一个声纳违规,听起来像“避免使用异常作为流控制。” 我想知道根据最佳实践重写此代码的最佳方法是什么 try { } catch(SomeCheckedException ex) { throw (SomeRuntimeException) ex.getCause(); } 这是一种设计气味,sonar识别的模式与您的代码相匹配,如果您希望在通常的流中发生某些事情,然后抛出异常,而不是处理错误,并提供适当的返回,而不是向调用方抛出另一个异常,则最有可能出现这种情况 这不是最佳的

我有一个声纳违规,听起来像“避免使用异常作为流控制。”

我想知道根据最佳实践重写此代码的最佳方法是什么

try { 
} catch(SomeCheckedException ex) {
      throw (SomeRuntimeException) ex.getCause();
}

这是一种设计气味,sonar识别的模式与您的代码相匹配,如果您希望在通常的流中发生某些事情,然后抛出异常,而不是处理错误,并提供适当的返回,而不是向调用方抛出另一个异常,则最有可能出现这种情况

这不是最佳的一个原因是,在预期的错误情况下,异常处理比简单地返回null(例如)要慢得多。您的软件还应提供一个清晰的API,该API不应以异常为中心。

问问自己“为什么要检查异常”,然后在代码中专门检查异常。可能相关: