我阅读了throw early catch late原则,现在我想知道是否应该在我的servlet中捕获数据库异常。
在我看来,servlet是我应用程序中的最后一点,我可以在其中决定程序流程。我可以将http错误代码发送回客户端,而在dao层执行此操作对我来说似乎很奇怪。
如果我错了,我会很高兴听到如何在dao层中正确捕获数据库异常。
答案 0 :(得分:2)
Throw early catch late
不是解决引发异常的预期失败的解决方案。
编写网络代码时,网络通常会丢弃数据包,或者您尝试使用的服务无法访问。导致整个servlet崩溃将是一个非常糟糕的做法,因为它需要网络可操作以使servlet可操作。
这似乎不是一个良好的用户体验,更合理的方法是提出您正在尝试连接到数据库,失败,重新尝试和失败等等。至少在这种情况下输出,你得到一个更好的抱怨,数据库不可用,而不是你的servlet崩溃。