java避免使用异常作为流控制
我有一个声纳违规,听起来像是“避免使用异常作为流量控制”
我想知道根据最佳实践重写代码的最佳方法是什么
try {
} catch(SomeCheckedException ex) {
throw (SomeRuntimeException) ex.getCause();
}
你可以在下面搜索框中键入要查询的问题!
我有一个声纳违规,听起来像是“避免使用异常作为流量控制”
我想知道根据最佳实践重写代码的最佳方法是什么
try {
} catch(SomeCheckedException ex) {
throw (SomeRuntimeException) ex.getCause();
}
# 1 楼答案
这是一种设计气味,sonar识别的模式与您的代码相匹配,如果您希望在通常的流中发生某些事情,然后抛出异常,而不是处理错误,并提供适当的返回,而不是向调用方抛出另一个异常,则最有可能出现这种情况
这不是最佳的一个原因是,在预期的错误情况下,异常处理比简单地返回null(例如)要慢得多。此外,你的软件应该提供一个清晰的API,不应该以异常为中心