0

これに対する警告メッセージを停止するためにこれをどのように解決するのですか?ラベルにエラーを付けようとしています。キャッチしてみると、アプリのクラッシュを本当に防ぐことができますか?

@catch (NSException *ex) {
    errorLbl.text =ex;
}
4

3 に答える 3

2

クラッシュをキャッチしようとするのではなく、コードが完全にクラッシュしないことを確認する必要があります。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;
}
于 2012-05-04T19:04:51.663 に答える
1

この質問を理解するのは難しいですが、あなたの質問があれば、CatchはNSExceptionに基づくすべての例外をキャッチしますか?答えは「はい」で、小さな問題があります。

あなたはそれを捕まえることができます、しかしあなたはそれについて何もしていないので、コードは捕まえた後も続きます。アプリがクラッシュしている場合は、ラベルにエラーを入力しますが、アプリが安定した位置にあることを意味するわけではなく、クラッシュし続ける可能性があります。

于 2012-05-04T19:03:12.247 に答える
0

NSExceptionには、次のreasonように表示できる「人間が読める」理由が含まれています。

@catch (NSException *ex) {
    errorLbl.text = ex.reason;
}

詳細については、NSExceptionリファレンスを参照してください。

Objective-Cの例外(他の言語とは異なり)は、通常のプログラムフローではなく、プログラミングまたは予期しないランタイムエラーに使用されることを目的としていることに注意してください。 ドキュメントの状態:

重要:プログラミングの例外の使用、または範囲外のコレクションアクセス、不変オブジェクトの変更の試行、無効なメッセージの送信、ウィンドウサーバーへの接続の喪失などの予期しないランタイムエラーの使用を予約する必要があります。通常、これらの種類のエラーは、実行時ではなくアプリケーションの作成時に例外として処理されます。

..。

例外の代わりに、エラーオブジェクト(NSError)とCocoaエラー配信メカニズムが、Cocoaアプリケーションで予想されるエラーを伝達するための推奨される方法です。詳細については、 『エラー処理プログラミングガイド』を参照してください。

エラー処理プログラミングガイドを参照してください。

于 2012-05-05T00:44:22.893 に答える