アプリのmain.mでアプリがクラッシュしましたが、xcodeはクラッシュが発生した場所を表示せず、リターンUIApplicationMain(argc、argv ...)でクラッシュすることを示しているため、エラーが発生している理由がわかりません。それは私に何も教えてくれません。
Objective-CでC++のtry/catchに相当するものを使用して、エラーが発生している場所を正確に確認する方法はありますか?
アプリのmain.mでアプリがクラッシュしましたが、xcodeはクラッシュが発生した場所を表示せず、リターンUIApplicationMain(argc、argv ...)でクラッシュすることを示しているため、エラーが発生している理由がわかりません。それは私に何も教えてくれません。
Objective-CでC++のtry/catchに相当するものを使用して、エラーが発生している場所を正確に確認する方法はありますか?
Objective-C には@try
/@catch
がありますが、あまり役に立ちません。に到達するまでに@catch
、エラーが発生したスタック フレームはなくなります。
必要なのは、例外で中断するブレークポイントを設定することです。ブレークポイント ナビゲーターページ (右から 2 番目のボタン) を開き、ナビゲーター ページの下部にある [+] をクリックします。「例外ブレークポイントを追加...」を選択し、[完了]をクリックします。
これで、プログラムが例外をスローするたびに、プログラムがデバッガーで中断されます。
以下に try catch 構文を示しましたが、それに加えて、Xcode ではブレークポイントを設定できます。プロジェクト エクスプローラーの左側で、[ブレークポイント] タブをクリックします。左下に + が表示されます。(上の写真) それをクリックすると、例外ブレークポイントを設定するオプションが表示されます。これにより、クラッシュが発生した行で停止します。そのため、どこにでも try catch ステートメントを設定する必要はありません。
@try {
// Your statements here
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}