【发布时间】:2012-09-18 12:20:38
【问题描述】:
在 C++ 中,我正在使用 mysql.h 库,但无法捕获 MySQL 错误(例如,由于主键冲突而导致插入失败)。
我试过了
#include <mysql.h>
// ...
try{
res = mysql_perform_query(conn, sqlIn);
} catch (...) {
// ...
}
但它仍然无法避免中止:
MySQL query error : Duplicate entry
我正在使用 PuTTy 接口运行已编译的 c++ 程序,当程序中止时,它会重现 MySQL 的错误(无论我是否使用 TRY CATCH)。
我没有找到任何对 MySQL 使用 catch 语句的特定异常代码的引用。
显然,即使使用“一揽子”语法 (catch (...)),C++(使用此库 mysql.h)也不会捕获 MySQL 回调错误。由于这种语法应该捕获所有异常,但在这种情况下没有,我不知道这里发生了什么。如何捕获 SQL 异常?
【问题讨论】:
-
如果你没有捕捉到异常,你怎么知道那是失败信息?
-
@hmjd 我正在使用 PuTTy 接口运行已编译的 c++ 程序,当程序中止时,它会重现 MySQL 的错误(无论我是否使用 TRY CATCH)。
-
您是否尝试在调用 MySQL 之间调用
mysql_errno()?如果您没有处理 SQL 错误(此处不讨论异常),然后继续调用更多 MySQL 代码,则 MySQL 可能会像exit(1)那样中止应用程序。 -
我以为mysql的接口是C的,所以应该不会抛出异常吧。
标签: c++ exception-handling mysql-error-1062