我希望制造一个Swift崩溃,以测试应用程序的某些崩溃处理功能。在C++中,通常我会这样操作来实现此目的:解引用一个NULL指针。
int *i = 0;
*i = 42;
在swift中生成崩溃的最简单方法是什么?
你可以在一个空的可选变量上使用强制解包运算符:
let number: Int? = nil
let val = number!
应该会抛出这样的异常:
致命错误:在展开可选值时意外发现 nil
不过,你还可以使用更优雅的方式让你的应用程序崩溃,使用全局函数 fatalError
,它停止程序执行 - 但它接受一些参数,这取决于你试图实现什么目标:
@noreturn func fatalError(@autoclosure message: () -> String = default, file: StaticString = default, line: UWord = default)
实际上,我自己找到了另一种方法(虽然我不确定它是否只适用于iOS)。
只需调用abort即可完成任务:
abort()
还有一种简单的方法让Swift崩溃:
let testArray = ["1","2","3"]
let a = testArray[4]
这将会抛出一个类似于以下的异常:
致命错误:数组索引超出范围
因为你试图访问数组中不存在的成员。
在你的代码中简单地添加fatalError()。
fatalError()