objective-c – 在什么情况下,在Cocoa的trycatchfinally中终止异常处理?

objective-c – 在什么情况下,在Cocoa的trycatchfinally中终止异常处理?,第1张

概述考虑下面的 Cocoa / Obj-C代码片段: MyClass *obj;@try { [obj doSomething];}@catch (NSException * e) { NSLog(@"Exception occurred: %@", [e description]);}@finally { [obj cleanUp];} 和 MyClass *ob 考虑下面的 Cocoa / Obj-C代码片段:
MyClass *obj;@try {    [obj doSomething];}@catch (NSException * e) {    NSLog(@"Exception occurred: %@",[e description]);}@finally {    [obj cleanUp];}

MyClass *obj;@try {    [obj doSomething];}@catch (NSException * e) {    NSLog(@"Exception occurred: %@",[e description]);}[obj cleanUp];

在什么情况下第一个片段会导致[obj cleanUp]被调用,而第二个不会导致[obj cleanUp]被调用?换句话说,在使用Cocoa异常处理时,在什么情况下@finally是非冗余的?

解决方法 在这种情况下,您在哪里挤压异常,没有. @finally用于清理当您没有捕获异常或者重新抛出异常时,无论在哪一种情况下,都会对调用代码留下最终的异常响应.由于Cocoa中的异常只能用于编程错误,因此很少发生,这是一个完全合理的事情.

还要指出一种情况,您不需要使用@finally,当您设置自己的自动释放池时.当“父”自动释放池被销毁时,任何尚未清理的内部池也将被释放.如果您尝试自己清理,您需要将自己的异常本身从您的自动释放池中引出.

总结

以上是内存溢出为你收集整理的objective-c – 在什么情况下,在Cocoa的try / catch / finally中终止异常处理?全部内容,希望文章能够帮你解决objective-c – 在什么情况下,在Cocoa的try / catch / finally中终止异常处理?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1252886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存