尝试的目的!在斯威夫特

时间:2015-11-13 19:33:06

标签: swift

我很困惑,因为尝试的目的究竟是什么!文档说你可以试试!调用可以抛出异常但尝试的方法!用作来自调用者的promise,它不会抛出异常,或者开发人员对异常的结果不感兴趣。

因此,如果开发人员对捕获该异常不感兴趣,那么为什么在第一种情况下甚至抛出该方法的异常。

func foo() throws {
 }

try! foo() 

Why not: 

func foo() {
}

foo()

2 个答案:

答案 0 :(得分:4)

struct Error:ErrorType{}
// function is defined somewhere
// i know just the declaration
//
// func foo(i:Int!) throws -> Void
//

func foo(i: Int!) throws {
    if i == nil {
        throw Error()
    }
}

// i am sure the call is 'safe'
// this simplifies my code
try! foo(2)

//foo(2)  // error: call can throw but is not marked with 'try'

let str = "2,2" // mimic result of some operation
do {
    // i am not sure if str represents an Int
    try foo(Int(str))
} catch {
    print("error")
}

答案 1 :(得分:0)

如果函数获取非法参数,则可能会抛出错误。但是,如果此函数与仅允许输入合法参数的UI一起使用,则可以使用try!调用此函数,因为您确定永远不会抛出该异常。

我读了一本关于Swift的书,说你可以在开发的早期阶段使用try!,因为如果抛出错误,app会崩溃,因此开发人员或测试人员不能忽视这个错误。但是,我不会使用它,因为在代码投入生产之前可能忘记删除try!