3

私はWindows APIの初心者なので、ここで理解できないことがあるはずです。私のメイン関数では、キャッチされていないすべての例外をキャッチするために try-catch を使用していますが、何らかの理由で、コード内の別の場所からスローした例外は決してキャッチされません。私のアプリケーションは単一の (メイン) スレッドを使用します。

私はこのように投げています:

throw "ClassName::methodName() - Error message";

そして、メッセージ ループの外で例外をキャッチします。

try {
    while(GetMessage(args...)) {
        TranslateMessage(args...);
        DispatchMessage(args...);
    }
}
catch( const char * sExc ) {
    ::MessageBox(args...);
}

最初は型の不一致の問題だと思っていましたが、省略記号を使用して catch(...) を追加しましたが、まだ何もキャッチされませんでした。あなたが尋ねるなら、はい、例外がスローされると確信しています。なんらかの非同期性などの問題ではないでしょうか。

ご協力いただきありがとうございます !

4

2 に答える 2

1

「Windows 構造化例外処理」( http://msdn.microsoft.com/en-us/library/windows/desktop/ms680657%28v=vs.85%29.aspx )について話している。C++ 例外はスローされません。

面倒なルートに行きたい場合: _set_se_translator

関連項目: C プログラムは C++ 例外を処理できますか? (Windows API は C++ ではありません)

于 2013-09-13T13:38:18.603 に答える