Xcode 9.1改进了Swift程序崩溃时的错误提示信息:在debug模式下运行程序,崩溃时将在编辑区的崩溃位置显示崩溃的原因,如下图所示:

而在此之前,只是显示简单的诸EXC_BAD_INSTRUCTIONEXC_BREAKPOINT这样的偏底层的Mach异常信息,无法获取到实际的信息。

这一改进包含了以下崩溃类型的提示:

  • 强制解包nil
  • try!导致的错误
  • 数组越界
  • precondition失败
  • 断言失败
  • fatalError调用

不过需要注意的是只有在程序入口是用Swift来写的应用中(@UIApplicationMain/@NSApplicationMain)才有效。

参考

Xcode 9.1 Improves Display of Fatal Errors