检查sql错误/异常

时间:2016-04-24 15:29:29

标签: sql database exception-handling crud

当我使用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操作并对它们进行尝试捕获似乎非常重复。

由于在服务器端验证用户输入是一种好习惯,除了在应用程序启动时连接数据库之外,还需要捕获数据库异常吗?

2 个答案:

答案 0 :(得分:2)

访问任何外部软件系统时,您应该检查错误,这只是一个好习惯。虽然“正常”操作可能不会生成错误,但您可能会因其他原因而出错。例如:

  • 数据库服务器断开连接。
  • 数据库/架构/表格不再可用。
  • 查询会生成超时。
  • 数据库日志已满。

如果底层数据库发生更改,您也可能会收到错误。例如:

  • 列类型可能会更改。
  • 列名可能会更改。
  • 表名可能会更改。

重点是:你要么写一次性的,一次性的代码,要么你正在编写可持续的代码。如果是后者,那么你应该检查潜在的错误。 try / catch块是负责任的编程和良好实践的标志。它们并不凌乱。

答案 1 :(得分:1)

更多关于戈登回答你的问题的答案。但是评论太多了。

您对异常所做的操作取决于异常的级别。用户并不关心错误是来自服务器还是客户端。他们所关心的只是它不起作用。

如果您可以优雅地处理它,那么以一致的方式向用户发出警告消息。它可以在同一页面,另一个页面,弹出窗口......可以继续。超时是非严重错误的一个例子。

如果是致命错误,则以一致的方式再次向用户发送致命错误消息并关闭应用程序。通常告诉他们致电技术支持。正确,用户不喜欢看到关键的错误消息,但这比应用程序崩溃更好。

一个好的做法是将异常,内部异常,时间和用户ID写入数据库,以便您可以更好地处理它。东西将在测试和生产中破裂。没有良好的异常处理,跟踪和修复错误要困难得多。我认为在前面这样做是不那么重要的。如果它是一个扔掉的实用程序,那么另一件事。