当我使用java时,我经常看到这样的代码:
try {
// any CRUD operation
} catch(SQLException e) {
// do some specific database error stuff
// if we're in a transaction, we usually rollback
try {
// rollback the transaction
} catch(anotherException e) {
// do some specific rollback error stuff
}
}
当我的代码出现问题时,我只遇到了sql / database错误。做SQL操作并对它们进行尝试捕获似乎非常重复。
由于在服务器端验证用户输入是一种好习惯,除了在应用程序启动时连接数据库之外,还需要捕获数据库异常吗?
答案 0 :(得分:2)
访问任何外部软件系统时,您应该检查错误,这只是一个好习惯。虽然“正常”操作可能不会生成错误,但您可能会因其他原因而出错。例如:
如果底层数据库发生更改,您也可能会收到错误。例如:
重点是:你要么写一次性的,一次性的代码,要么你正在编写可持续的代码。如果是后者,那么你应该检查潜在的错误。 try
/ catch
块是负责任的编程和良好实践的标志。它们并不凌乱。
答案 1 :(得分:1)
更多关于戈登回答你的问题的答案。但是评论太多了。
您对异常所做的操作取决于异常的级别。用户并不关心错误是来自服务器还是客户端。他们所关心的只是它不起作用。
如果您可以优雅地处理它,那么以一致的方式向用户发出警告消息。它可以在同一页面,另一个页面,弹出窗口......可以继续。超时是非严重错误的一个例子。
如果是致命错误,则以一致的方式再次向用户发送致命错误消息并关闭应用程序。通常告诉他们致电技术支持。正确,用户不喜欢看到关键的错误消息,但这比应用程序崩溃更好。
一个好的做法是将异常,内部异常,时间和用户ID写入数据库,以便您可以更好地处理它。东西将在测试和生产中破裂。没有良好的异常处理,跟踪和修复错误要困难得多。我认为在前面这样做是不那么重要的。如果它是一个扔掉的实用程序,那么另一件事。