Java 我应该避免在servlet中捕获数据库异常吗?

Java 我应该避免在servlet中捕获数据库异常吗?,java,exception,servlets,Java,Exception,Servlets,我读了关于这个原理的书,现在我想知道是否应该在servlet中捕获数据库异常 在我看来,servlet是我的应用程序中的最后一点,在这里我可以决定程序流。我可以将http错误代码发送回客户端,而在dao层执行此操作对我来说似乎很奇怪 如果我错了,我会很高兴听到如何在dao层正确捕获数据库异常。抛出早捕获晚并不能解决引发异常的预期故障 在编写网络代码时,网络丢弃数据包或试图使用的服务无法访问是很常见的。导致整个servlet崩溃将是一种非常糟糕的做法,因为它需要网络才能运行servlet 这似乎不

我读了关于这个原理的书,现在我想知道是否应该在servlet中捕获数据库异常

在我看来,servlet是我的应用程序中的最后一点,在这里我可以决定程序流。我可以将http错误代码发送回客户端,而在dao层执行此操作对我来说似乎很奇怪


如果我错了,我会很高兴听到如何在dao层正确捕获数据库异常。

抛出早捕获晚
并不能解决引发异常的预期故障

在编写网络代码时,网络丢弃数据包或试图使用的服务无法访问是很常见的。导致整个servlet崩溃将是一种非常糟糕的做法,因为它需要网络才能运行servlet


这似乎不是一个好的用户体验,更合理的方法是表示您正在尝试连接到数据库,并且失败、重新尝试、失败等等。至少在这种输出下,您可以更好地抱怨数据库不可用,而您的servlet正在崩溃。

您尝试过吗?它甚至不能编译。@EJP为什么不能编译?假设我在一个doPost()方法中,我编写了userService.save(newuser());我现在能赶上了。注意,总的来说,“早出晚归”是个好主意。对于恰好引发异常的非异常事件来说,这不是一个好主意,因为此类常见事件不应中断整个程序的执行流程。很好的解释+1,但您还可以提供一些链接以进一步阅读。@AmitKhandelwal谈到了许多使某个程序可以安全重试的想法,如果要执行可重试的命令。如果希望读取可重试的数据,只需再次尝试连接并重新读取数据。