2016-10-11 15 views
-1

愚かな質問かもしれませんが、コンソールアプリケーション(新しいWin32コンソールアプリケーションプロジェクトウィザードで作成)でC++例外を使用したいと思います。コンソールアプリケーションのC++例外?

try { 
    // do something that may throw an exception 
} 
catch(exception e) { 
    printf("Exception: %s\n", e.what); 
} 

コンパイラは、識別子 'exception'が見つかりませんという文句を言います。
「例外」(例えば、「IOException」、「bad_alloc」)の代わりに、運がないといろいろ試しました。

私は、プロジェクト構成では例外的なさまざまなオプションを試しました。
私はそれが

catch(...) { 

を使用してコンパイル作ることができたが、それは私の例外についての情報を与えません。

質問:
例外がありますかは非.NETアプリですか?
いくつかのインクルードファイルがありませんか?
私がした、またはしなかった何か他の(ダム)もの?

+1

_ "コンパイラは、識別子 '例外' が見つかりませんという文句を言います。" _ Ehhrm。 '#'をインクルードし、コード内に 'namespace std;'を使用しましたか?あなたのエラーを再現する[MCVE]を提供してください。 –

答えて

2

非.NETアプリでも例外が許可されていますか?

はい、そうです。

いくつかのインクルードファイルがありませんか?

#include <exception>や名前空間のスコープがstd::である必要があります。

私がした、またはしなかったことは何ですか?

例外をキャッチするより良い方法は、BTW const参照である:

#include <exception> 

int main() { 
    try { 
     // do something that may throw an exception 
    } 
    catch(const std::exception& e) { 
     printf("Exception: %s\n", e.what); 
    } 
} 
+0

const参照の参照部分がありません;-) –

+0

@SimonKraemer THX、それを修正しました。 –

+0

ありがとうございました。私は "#"を追加してエラーが消え去った。 – DontPanic