これに対する警告メッセージを停止するためにこれをどのように解決するのですか?ラベルにエラーを付けようとしています。キャッチしてみると、アプリのクラッシュを本当に防ぐことができますか?
@catch (NSException *ex) {
errorLbl.text =ex;
}
これに対する警告メッセージを停止するためにこれをどのように解決するのですか?ラベルにエラーを付けようとしています。キャッチしてみると、アプリのクラッシュを本当に防ぐことができますか?
@catch (NSException *ex) {
errorLbl.text =ex;
}
クラッシュをキャッチしようとするのではなく、コードが完全にクラッシュしないことを確認する必要があります。NSException
ただし、いつでもに変換できますNSString
@catch (NSException *ex) {
errorLbl.text = [NSString stringWithFormat:@"%@",[ex reason]];
}
NSException
@interface NSException : NSObject <NSCopying, NSCoding> {
@private
NSString *name;
NSString *reason;
NSDictionary *userInfo;
id reserved;
}
この質問を理解するのは難しいですが、あなたの質問があれば、CatchはNSExceptionに基づくすべての例外をキャッチしますか?答えは「はい」で、小さな問題があります。
あなたはそれを捕まえることができます、しかしあなたはそれについて何もしていないので、コードは捕まえた後も続きます。アプリがクラッシュしている場合は、ラベルにエラーを入力しますが、アプリが安定した位置にあることを意味するわけではなく、クラッシュし続ける可能性があります。
NSExceptionには、次のreason
ように表示できる「人間が読める」理由が含まれています。
@catch (NSException *ex) {
errorLbl.text = ex.reason;
}
詳細については、NSExceptionリファレンスを参照してください。
Objective-Cの例外(他の言語とは異なり)は、通常のプログラムフローではなく、プログラミングまたは予期しないランタイムエラーに使用されることを目的としていることに注意してください。 ドキュメントの状態:
重要:プログラミングの例外の使用、または範囲外のコレクションアクセス、不変オブジェクトの変更の試行、無効なメッセージの送信、ウィンドウサーバーへの接続の喪失などの予期しないランタイムエラーの使用を予約する必要があります。通常、これらの種類のエラーは、実行時ではなくアプリケーションの作成時に例外として処理されます。
..。
例外の代わりに、エラーオブジェクト(NSError)とCocoaエラー配信メカニズムが、Cocoaアプリケーションで予想されるエラーを伝達するための推奨される方法です。詳細については、 『エラー処理プログラミングガイド』を参照してください。
エラー処理プログラミングガイドを参照してください。