有没有办法赶上或处理EXC_BAD_ACCESS?

据我所知,EXC_BAD_ACCESS是在您尝试访问不良内存时发生的(如果我错了,请随时纠正)?

有没有办法像Java中的try-catch一样捕获它,以防止应用程序总失败?

不; EXC_BAD_ACCESS意味着事情已经疯狂地离开了轨道。 您的程序正在尝试访问无效的内存地址。 即内存已经损坏,并没有可预见的恢复。

这可能是一个内存pipe理问题。 如果你能重现这个问题,打开NSZombies,看看会发生什么。 或者在这里发布回溯。

请注意,try-catch样式exception在iOS / Cocoa中也是不可恢复的。 exception不能用于可恢复的error handling。 这是NSError的。

有时你可以用信号处理程序捕捉它。 但是,不允许你做太多,除了logging一些东西。

可以使用try catch,但您首先需要知道是什么导致了这个问题。 你可以为你当前的版本启用NSZombie来捕捉错误并消除需要。 编辑当前scheme,启用NSZombie。

  • 更新* Swift2 +现在有出色的error handling,绝对值得一试。 Swifterror handling