我很困惑,因为尝试的目的究竟是什么!文档说你可以试试!调用可以抛出异常但尝试的方法!用作来自调用者的promise,它不会抛出异常,或者开发人员对异常的结果不感兴趣。
因此,如果开发人员对捕获该异常不感兴趣,那么为什么在第一种情况下甚至抛出该方法的异常。
func foo() throws {
}
try! foo()
Why not:
func foo() {
}
foo()
答案 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!
。