Objective-c/Cocoa抛出异常(Exception)的最好方式是什么?
回复:
抛出异常的方式
平常使用[NSException raise:format:]
,示例如下:
[NSException raise:@"Invalid foo value" format:@"foo of %d is invalid", foo];
或者:
@throw([NSException exceptionWith…])
两者区别就是@throw
可以用来抛出不属于NSException
类的对象。
捕获异常的方式
@try {
.....
}
@catch{
...
}
@finally{
...
}
注意:
在Objective-C中,与许多类似的语言不同,您通常应该避免在正常操作中可能发生的常见错误情况下使用异常。也就是小错误不要轻易抛出异常
Apple’s conceptual Exception handling documentation重要提示:您应该为编程或意外运行时错误保留异常的使用,比如越界集合访问、尝试修改不可变对象、发送无效消息和丢失到窗口服务器的连接。通常在创建应用程序时(而不是运行时)处理这类错误,但有例外。建议使用错误对象(NSError)和Cocoa错误传递机制来处理Cocoa应用程序中的预期错误,而不是异常。