9

アプリのmain.mでアプリがクラッシュしましたが、xcodeはクラッシュが発生した場所を表示せず、リターンUIApplicationMain(argc、argv ...)でクラッシュすることを示しているため、エラーが発生している理由がわかりません。それは私に何も教えてくれません。

Objective-CでC++のtry/catchに相当するものを使用して、エラーが発生している場所を正確に確認する方法はありますか?

4

3 に答える 3

13

Objective-C には@try/@catchがありますが、あまり役に立ちません。に到達するまでに@catch、エラーが発生したスタック フレームはなくなります。

必要なのは、例外で中断するブレークポイントを設定することです。ブレークポイント ナビゲーターページ (右から 2 番目のボタン) を開き、ナビゲーター ページの下部にある [+] をクリックします。「例外ブレークポイントを追加...」を選択し、[完了]をクリックします。

これで、プログラムが例外をスローするたびに、プログラムがデバッガーで中断されます。

于 2012-12-08T05:00:01.723 に答える
8

ここに画像の説明を入力 ここに画像の説明を入力

以下に try catch 構文を示しましたが、それに加えて、Xcode ではブレークポイントを設定できます。プロジェクト エクスプローラーの左側で、[ブレークポイント] タブをクリックします。左下に + が表示されます。(上の写真) それをクリックすると、例外ブレークポイントを設定するオプションが表示されます。これにより、クラッシュが発生した行で停止します。そのため、どこにでも try catch ステートメントを設定する必要はありません。

@try {

    // Your statements here
 }
 @catch (NSException * e) {
    NSLog(@"Exception: %@", e);
 }
 @finally {
    NSLog(@"finally");
 }
于 2012-12-08T04:59:21.770 に答える