доступ к объекту-c исключение в блоке finally - PullRequest
3 голосов
/ 23 апреля 2009

Учитывая следующую ситуацию:

@try {
    @try {
        // raises an exception :)
        [receiver raisingFirstException];
    } @finally {
        // raises another exception :)
        [otherReceiver raisingFinalException];
    }
} @catch (id e) {
    printf("exception: %s\n", [[e stringValue] cString]);
}

Есть ли способ получить первое исключение в пределах @finally блок или получить оба исключения в блоке @catch?

У меня есть код, где блок @finally выполняет некоторые проверки, которые могут вызвать исключение, но я не хочу терять исходное исключение (основную причину).

Если не было оригинального исключения, но проверки не пройдены, я хочу Исключение они бросают.

1 Ответ

2 голосов
/ 23 апреля 2009

Лучший способ сделать это - назначить исключение переменной, доступной из остальной части вашего блока.

NSException *ex;
@try {
    @try {
        [someObject methodWhichCouldThrowException];
    } @catch (NSException *e) {
        ex = e;
    } @finally {
        [anotherObject methodWhichCouldThrowADifferentException];
    }
} @catch (NSException *e) {
    // From here you can access both the exception thrown by 'someObject'
    // as well as the exception thrown by 'anotherObject'.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...