【问题标题】:Beginner C++ - Trying to catch an exception初学者 C++ - 试图捕捉异常
【发布时间】:2018-01-04 12:47:23
【问题描述】:

所以基本上我有这个代码:

#include <iostream>
using namespace std;

#include "libsqlite.hpp"

int main()
{
    sqlite::sqlite db( "firefly.sqlite" );

    auto cur = db.get_statement(); 

    // cur->set_sql( "CREATE TABLE students_mark (sid INT, name VARCHAR(255), pt1_mark INT, pt2_mark INT, cw_mark INT, PRIMARY KEY(sid, name));" );
    cur->set_sql( "INSERT INTO students_mark (sid, name, pt1_mark, pt2_mark, cw_mark) VALUES (?, ?, ?, ?, ?);" );

    cur->prepare();
}

这给了我这个错误:

libc++abi.dylib: terminating with uncaught exception of type sqlite::exception: std::exception
Abort trap: 6

所以我试图捕捉异常以更好地理解它,但我似乎无法实现这个目标。

这就是我所做的:

try {
    cur->prepare();
} catch(exception& e) {
    cout << "Error: " << e.what() << endl;
}

这给了我这个输出:Error: std::exception

我能做什么?

非常感谢

【问题讨论】:

  • 输出Error: std::exception不是你的catch语句生成的吗?有什么问题?
  • 不清楚你想做什么。捕捉异常似乎工作正常
  • 您确定这是您的确切代码吗?你有没有机会catch(exception e)(忘记&amp;)?您的输出与github.com/glycos/libsqlitepp/blob/master/libsqlite.hpp#L37 不匹配
  • 既然您以未捕获的 sqlite::exception 类型的异常终止: 为什么不尝试捕获sqlite::exception
  • @NathanOliver 我刚试过,它给了我Error : Sqlite error: Could not prepare sql.

标签: c++ c++11 sqlite


【解决方案1】:

存在例外的原因有很多。但现在它在那里让你知道有什么问题。仅仅抓住它并不能解决问题本身。它只会在问题发生后改变程序的行为。

您使用catch (sqlite::exception &amp;e) 很好地捕获了异常,现在您知道问题所在了。现在,研究并修复异常告诉您的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-10
    • 2013-03-29
    • 2013-03-24
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多