2017-07-28 117 views
1

所以基本上我有這樣的代碼:初學C++ - 嘗試捕捉異常

#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

我能做些什麼?

非常感謝

+2

是不是'catch'語句生成的輸出'Error:std :: exception'?什麼是問題? –

+0

不清楚你想要做什麼。捕捉異常似乎工作正常 – user463035818

+1

你確定這是你的確切代碼嗎?你有沒有抓住(例外e)(忘記'&')?你的輸出不匹配https://github.com/glycos/libsqlitepp/blob/master/libsqlite.hpp#L37 – BoBTFish

回答

1

例外存在幾個原因。但現在它在那裏讓你知道一些錯誤。簡單地捕捉它並不能解決問題本身。它只會在問題發生後改變程序的行爲。

您發現異常情況很好,使用catch (sqlite::exception &e),現在您知道問題所在。現在,研究並解決例外情況告訴你的情況。