抛出异常的方法

时间:2011-04-27 13:25:05

标签: objective-c

虽然在Objective-C中进行编程,但偶尔会有一些方法抛出一个我没想到的异常。

事后看来,我可以看出它为什么会引发异常,而且通常,解决问题会带来更好的代码。

但是,提前知道哪些方法会引发异常以及在什么情况下会很方便。

例如:

NSString *aString;
aString = @"Less than 42 characters.";
[aString substringToIndex:42];

会抛出异常,因为字符串包含少于42个字符。

还有:

NSString *aString = @"This is a string.";
NSString *bString = nil; 
aString = [NSString stringByAppendingString:bString];

同样会崩溃,因为bString是nil。

还有其他例子吗?

2 个答案:

答案 0 :(得分:2)

  

但是,提前知道哪些方法会引发异常以及在什么情况下会很方便。

它在文档中告诉你。

答案 1 :(得分:1)

虽然Objective-C支持例外,但很少使用它们。它们最大的问题是内存泄漏是由于在释放对象之前跳出上下文引起的(尽管在GC环境中不再有问题)。

例外主要用于Objective-C中的致命条件,它们很少用于可恢复的错误。为此,方法传递指针到指针,如+[NSURLConnection sendSynchronousRequest:returningResponse:error:]

因此,只要文档没有明确说明异常,就不需要太多关注它们了。

您的第一个示例将始终抛出异常BTW,因为NSString没有方法subString: