先看一段代码:
public void doExchange()
throws Exception {
![[hyddd的Fortify SCA分析Java代码记录][Structural]Poor Error Handing:Overly Broad Throws [hyddd的Fortify SCA分析Java代码记录][Structural]Poor Error Handing:Overly Broad Throws](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9TDJsdFlXZGxjeTlrYjNRdVoybG0=)
}
throws Exception {
}
当一个函数定义为Exception/Throwable时,调用这个函数的人很难判断到底这个函数可能会出现什么Exception,简单说 Exception/Throwable太笼统了,这样不利于调用者分别处理各种异常,所以应该在函数定义时尽量说明函数有可能抛出的异常类型,如下面的代码:
public void doExchange()
throws IOException, InvocationTargetException,
SQLException {
![[hyddd的Fortify SCA分析Java代码记录][Structural]Poor Error Handing:Overly Broad Throws [hyddd的Fortify SCA分析Java代码记录][Structural]Poor Error Handing:Overly Broad Throws](/default/index/img?u=L2RlZmF1bHQvaW5kZXgvaW1nP3U9TDJsdFlXZGxjeTlrYjNRdVoybG0=)
}
throws IOException, InvocationTargetException,
SQLException {
}
其实[Structural]Poor Error Handing:Overly Broad Throws和[Structural]Poor Error Handing:Overly Broad Catch的想法很类似,大家可以参考一下。