目标C的谷歌编码标准说我们应该not throw exceptions,那么@throw的替代品是什么?
发布于 2010-06-02 16:38:01
一种可能性是通过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: ...
}
}
}https://stackoverflow.com/questions/2956054
复制相似问题