有没有办法超载运营商!在Swift中避免生产版本崩溃?

use*_*146 -8 exception-handling ios swift swift2 swift3

如果存在nil,强制解包会导致应用程序崩溃.这在您的应用程序的开发阶段非常酷.但是如果你懒得去做,那么这对于你的生产构建尤其令人头疼.

有没有人尝试过任何运算符重载/覆盖,以阻止生成构建的这些崩溃?

Ale*_*ica 7

不,没有,没有,也不应该.

崩溃是故意的.Swift语言的实现者故意忘记设计强制解包operator(!)崩溃.

这是设计的.

何时nil遇到并且没有安全处理,有两种方法可以继续:

  1. 允许程序继续处于不一致状态,并允许它以未定义的,无法预料的方式运行.

要么

  1. 崩溃程序,防止它继续处于不一致,未定义,无法预见的状态.这将保护您的文件系统,数据库,Web服务等免受永久性损坏.

您认为哪两个选项更有意义?

  • @AMomchilov这是**错误处理**.不是**异常处理**.感到不同.您无法从Swift中的异常中恢复. (3认同)