正在检查 sql errors/exceptions

Checking sql errors/exceptions

当我使用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 操作并在它们周围放置 try catch 似乎非常重复。

既然在服务器端验证用户输入是一种很好的做法,那么除了在应用程序启动时连接到数据库之外,还需要捕获数据库异常吗?

访问任何外部软件系统时,您应该检查错误,这是一个很好的做法。尽管 "normal" 操作可能不会产生错误,但您可能会因其他原因而出错。例如:

  • 数据库服务器断开连接。
  • database/schema/table 不再可用。
  • 查询产生超时。
  • 数据库日志已满。

如果基础数据库发生变化,您也可能会收到错误消息。例如:

  • 列类型可能会更改。
  • 列名称可能会更改。
  • Table 名称可能会更改。

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

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

您如何处理异常取决于异常的级别。用户并不真正关心错误是来自服务器还是客户端。他们所关心的只是它没有用。

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

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

一个好的做法是将异常、内部异常、时间和用户ID写入数据库,以便更好地处理它。东西会在测试和生产中出现问题。如果没有良好的异常处理,就很难追踪和修复错误。我认为直接在前面做会比较省力。如果它是一次性实用程序,则另当别论。