有什么方法可以在Swift中捕获断言吗?

时间:2014-06-02 21:46:10

标签: exception try-catch assert swift

似乎Swift没有类似C#/ Java的异常,而是使用断言。但是,该书说,在生产环境中,它们会立即使应用程序崩溃。周围没有办法吗?那么单元测试怎么样,我如何测试某个函数断言它获得了正确的输入值?

3 个答案:

答案 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

指出