0

以下のコードを使用して例外を発生させています。

[NSException raise:@"ExceptionName" format:@"XYZ"];

例外が発生すると、コールスタックもコンソールにログインします。コールスタックをコンソールに記録したくありません。それを回避する方法。

4

1 に答える 1

1

Cocoa は例外とうまく混ざりません (慣用的な C++ は別の話です)。通常、例外は Cocoa では回復不能であると考える必要があります。そのため、Cocoa での別の (より慣用的な) 形式のエラー処理を検討する必要があります。したがって、短い答えは次のとおりです。「回復するつもりがない限り、例外をスロー/発生させないでください」。


まだ満足していませんか?

例外をキャッチして続行する機能があります。

#import <Foundation/Foundation.h>

static void A() {
    [NSException raise:@"ExceptionName" format:@"XYZ"];
}

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        @try {
            A();
        }
        @catch (NSException * e) {
            NSLog(@"e=mc%p", e);
            NSLog(@"What I meant to say is: %@", e);
        }
    }
    return 0;
}

また、フレームワークは目的に合わせていくつかの高レベルのエントリとカスタマイズを提供します。ここで概要を説明します。マスクを設定してログ レベルをカスタマイズしたり、独自のキャッチされない例外ハンドラを設定したりできます。

于 2012-09-17T06:41:16.697 に答える