我很难理解从@ try到@ catch
的过渡据我所知,如果来自@try块的语句抛出异常,则会执行@catch块。我不明白包含异常信息的NSException对象如何作为参数传递。我正在网上阅读有关异常的很多内容都会跳过这个细节。
我书中的例子是
@try {
[myArray objectAtIndex: 2];
}
@catch (NSException *exception){
NSLog(@"Caught %@%@", exception.name, exception.reason);
}
因此,一旦检测到异常,就会自动创建一个异常对象并将其发送到@catch块?
答案 0 :(得分:0)
Try and Catch用于异常处理。只要try块中发生错误,编译器就会跳转到相应的Catch块并将Exception对象传递给它。 我们只需访问异常对象即可了解错误的详细信息。
答案 1 :(得分:0)
是。发生错误时,将检查callstack生成的stack frames,以验证是否存在带有'catch'块的'try'语句。当它找到时,实例化包含执行上下文的Exception对象(例如关于callstack的上下文,线程和有关错误的详细信息),并将此对象作为参数传递给catch块。
提示:验证在objective-c中重新抛出异常的最佳实践。在C#中,我知道重新抛出操作can change scope of the exception。
希望它有所帮助。