• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 是否可以确定是否会捕获 Objective-C 异常?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:59:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在 iOS(和 OS X)中遇到了一种情况,当他们尝试解压缩损坏的存档时,来自 NSKeyedUnarchiver 的异常会导致纯二进制第三方框架崩溃我的应用程序(当部署在现场时),因此强制用户删除并重新安装应用程序。这种情况不会经常发生,但我希望这个数字为零。

我无法通过包装 NSKeyedUnarchiver 调用来解决问题,因为我没有源代码,而且这些调用不是我的代码所做的任何事情的直接结果;它们在任意时间在任意后台线程上运行。

我目前正在调整 NSKeyedUnarchiver 类,以便读取损坏的存档返回 nil(好像文件不存在)而不是抛出异常,但我无法确定这些第三方框架中的任何一个是否可能正确地做事(使用@try/@catch block ),如果我这样做,可能会以有趣的方式中断。

如果我能以某种方式检查 Objective-C 异常处理树(或等效的)以确定异常处理程序是否会在抛出异常时捕获异常,以及如果是,哪个处理程序会很有帮助。这样一来,如果异常会一直持续到 Crashlytics(它会重新抛出它,导致崩溃),我的修补方法可能会返回 nil,但如果其他处理程序捕获它,则可能会重新抛出异常。

这样的事情有可能吗,如果有,怎么做?



Best Answer-推荐答案


为什么不将抛出异常的调用点封装在 try/catch/finally 中?

    @try {
      //call to your third party unarchiver
    }

    @catch {
      //remove your corrupted archive
    }

    @finally {
      //party
    }

滚动您自己的全局异常处理程序也可以在这里使用,例如:How do you implement global iPhone Exception Handling?

关于ios - 是否可以确定是否会捕获 Objective-C 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32124576/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap