Boh*_*ian 21 java coding-style exception unchecked checked
任何人都可以想到为什么SQLException
是一个检查异常的理性原因?
是的,查询中可能存在语法错误
是,连接可能已经死亡
是的,可能存在权限问题
等等等等等等等等等等等等等
但几乎100%的时间(一旦你在生产中运行),没有任何问题.
如果出现问题,调用代码无法执行任何恢复操作,因此应该取消选中.
被检查会try catch
在整个代码中创建大量的敷衍块,因为任何参与过使用JDBC的项目的人都会证明这一点.代码混乱很重要.
由于SQL的深奥性质,你可能得到SQLException及其复杂性的原因很多,这意味着你基本上无法恢复,除非异常是由临时网络问题引起的,但即便在同步调用中,你仍然会陷入困境因为您无法无限期地等待解决网络问题,所以您将不得不使交易失败.
通常,调用SQL看起来像这样:
try {
// make some SQL call(s)
} catch {SQLException e) {
// log the exception
return; // and give up
}
Run Code Online (Sandbox Code Playgroud)
这样的代码没有增加价值.没有什么合理的你可以恢复.您也可以让运行时异常冒泡 - 即SQLException应该是运行时(未经检查)异常.
有几种方法可以解决受控与不受控的困境。检查调用代码是否可以从异常中恢复是一种方法,但是,我同意,这种方法并不能解释为什么SQLExcption
是受检查的异常。
另一项由 Martin Fowler 在他的伟大著作《重构》中提供,建议验证调用或被调用方法是否有责任进行可能导致异常的检查。
如果调用者方法应该在调用被调用方法之前执行检查(例如,确保参数不为空),那么如果尚未完成此检查,则显然是编程错误,然后被调用方法应该抛出未经检查的异常。
现在,如果由被调用方法负责进行检查,因为只有该方法才能知道如何执行此类检查,那么应该检查从被调用方法抛出的异常。
如果SQLException
我认为只有这个班才能知道:
归档时间: |
|
查看次数: |
18376 次 |
最近记录: |