正在检查 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写入数据库,以便更好地处理它。东西会在测试和生产中出现问题。如果没有良好的异常处理,就很难追踪和修复错误。我认为直接在前面做会比较省力。如果它是一次性实用程序,则另当别论。
当我使用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写入数据库,以便更好地处理它。东西会在测试和生产中出现问题。如果没有良好的异常处理,就很难追踪和修复错误。我认为直接在前面做会比较省力。如果它是一次性实用程序,则另当别论。