似乎Swift没有类似C#/ Java的异常,而是使用断言。但是,该书说,在生产环境中,它们会立即使应用程序崩溃。周围没有办法吗?那么单元测试怎么样,我如何测试某个函数断言它获得了正确的输入值?
答案 0 :(得分:3)
正如您所提到的,断言会使您的应用在调试或生产中崩溃。它们的设计不像Java / C#异常。他们唯一真正的目的是:
只要条件可能为假,就使用断言, 但必须确保您的代码能够继续使用 执行。 ......在无效条件可能的情况下,断言 是确保突出这些条件的有效方法 在开发期间,在您的应用发布之前注意到了。
由于您可以在Swift中使用Cocoa类,因此您仍然可以使用NSException
来处理代码可以处理的特殊事物。
答案 1 :(得分:2)
您可以按照本文中的说明为Swift添加try-catch支持:https://medium.com/@_willfalcon/adding-try-catch-to-swift-71ab27bcb5b8
基本上,它是Obj-C try-catch的包装
答案 2 :(得分:1)
从Apple书籍,Swift编程语言来看,它似乎应该使用枚举处理错误。
这是本书的一个例子。
enum ServerResponse {
case Result(String, String)
case Error(String)
}
let success = ServerResponse.Result("6:00 am", "8:09 pm")
let failure = ServerResponse.Error("Out of cheese.")
switch success {
case let .Result(sunrise, sunset):
let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)."
case let .Error(error):
let serverResponse = "Failure... \(error)"
}
来自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/br/jEUH0.l
对于意外的错误,您应该使用NSException作为lfalin
指出