转载自:http://www.itivy.com/iphone/archive/2011/12/20/iphone-objective-c-try-catch-statement.html
Objective-C中使用@try处理异常
这一篇我们主要来讲讲Objective-C中的@try块来处理异常,与@try结合一起的有@catch、@finally。文章非常基础,希望对初学者有所帮助。
在我们编写Objective-C程序时,最好的编程实践是指能预测程序中可能出现的问题。为此,你可以测试使程序异常终止的条件并处理这些情况,可能要记录一条消息并完全终止程序,或者采取其他正确措施。以避免错误为例,在程序运行时执行测试可以避免向对象发送未识别的消息。当试图发送这类未识别消息时,程序通常会立即终止并抛出一个异常。
看看下面的代码,Fraction类中未定义任何名为noSuchMethod的方法。当你编译程序时,就会得到相关警告消息。
1234567891011 | #import int
int
char
{ NSAutoreleasePool Fraction [f NSLog [f [pool return
} |
123456789101112 | -[Fraction *** reason: to Stack: 2482717003, 2498756859, 2482746186, 2482739532, 2482739730 ) Trace/BPT |
12345678910 | @ try
statement statement ... } @ catch
statement statement ... } |
下面的代码演示了异常处理,紧跟着的是程序的输出。
12345678910111213141516 | #import int
int
char
{ NSAutoreleasePool Fraction @ try
[f } @ catch
NSLog(@”Caught } NSLog [f [pool return
} |
1234 | *** Caught unrecognized Execution |
这是一个非常简单的例子,演示了如何在程序中捕获异常。可以使用@finally块包含是否执行抛出异常的@try块中的语句代码。
@throw指令允许你抛出自己的异常。可以使用该指令抛出特定的异常,或者在@catch块内抛出带你进入类似如下代码块的异常:
@throw;
自行处理异常后(例如,可能是在执行清除工作后)可能需要这么做。然后便可以让系统处理其余的工作。最后,可以使用多个@catch块按顺序捕获并处理各种异常。
标签: Objective-C, @try, 异常处理