каковы альтернативы бросать исключения в цель c - PullRequest
2 голосов
/ 02 июня 2010

Google Coding Standard для Objective C говорит, что мы не должны исключать исключения , какие альтернативы @throw тогда?

1 Ответ

6 голосов
/ 02 июня 2010

Одна возможность - доставить расширенную информацию об исключениях через NSError:

- (BOOL) doSomethingWhichCanFailWithError: (NSError**)aLocation {
    ...
    if( didFail ) {

        if( aLocation ) {

            *aLocation = [NSError errorWithDomain: kMyErrorDomain code: myErrorCode userInfo: nil];
        }
    }

    return !didFail;
}

Вызывающий может проверить, успешно ли выполнен вызов, проверив значение результата.Если в случае ошибки требуется дополнительная информация, он может указать место, где метод может хранить дополнительную информацию в:

NSError* error = nil;

if( ![instance doSomethingWhichCanFailWithError: &error] ) {

    NSString* domain = [error domain];

    if( [kMyErrorDomain isEqual: domain] ) {

         switch( [error code] ) {
         case ...: ...
         default: ...
         }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...