2009-05-21 7 views

答えて

3

ココア/財団に相当するのは、NSSetUncaughtExceptionHandler()の機能です。また、「例外処理ガイドfor Cocoa」のControlling a Program's Response to an Exceptionのセクションも参照してください。 NSApplicationオブジェクトが例外で終了したいときにアプリケーションが特定の事前定義されたものを実行するために行うことができるいくつかのデフォルト変更について説明します。

+0

Hmmm ...これは本当にうまくいかないことを除いて、非常に有望です。ここで私が持っているものです。 グローバル関数: 無効GlobalFilter(NSException * pException){// 何かを }ポストアプリ-初期化コードで : NSSetUncaughtExceptionHandler(&GlobalFilter)。 テストするために、私はこれを行うメソッドを書いた: wstring foo = NULL; foo-> size(); 私のプログラムはクラッシュしますが、ハンドラは呼び出されません... これはなぜ機能しないのでしょうか、何が間違っているのでしょうか? – psychotik

+1

はい、あなたのプログラムは例外を生成しておらず、バスエラーが発生しています。基本的なシグナルハンドラは、基本的にCrashReporterディレクトリにファイルを作成します。何か他のことをするには、SIGSEGVとSIGBUS用の新しいシグナルハンドラをインストールする必要があります。詳細は、signal(2)のmanページを参照してください。 NSSetUncaughtExceptionHandler()は、捕捉されていないObjective-C例外がアプリケーションを終了している場合に役立ちます。 –

+0

ありがとう!私は本当に両方のタイプのハンドラを追加するべきだと思います。ありがとう! – psychotik

3

Smart Crash Reportsをご覧ください。それが本当に悪いハックだと警告してください。

+0

ありがとうございますが、私はクラッシュが第三者経由で私にルーティングされるのを本当に探していません。興味のあることをすることができる場所で自分のEHを提供する必要があります.Windows用のSetUnhandledExceptionFilterと非常によく似たものです。 – psychotik