当您在Swift中发现抛出错误的第三方函数或方法时,是否有任何方法可以知道它可能会抛出哪些错误?
该信息在功能或方法签名中不可用。它只是说它会抛出一些东西......
答案 0 :(得分:0)
错误以标准方式传播。尝试通过向函数传递错误数据来模拟错误或禁用某些硬件(如网络适配器......)并尝试转储它
import Foundation
func foo() throws ->Void {
// anonymous Error
struct Error: ErrorType {
var msg = "error msg"
}
throw Error()
}
func boo() throws ->Void {
// anonymous NSError
let e = NSError(domain: "domain", code: 100, userInfo: nil)
throw e
}
do {
try foo()
} catch let e {
print("foo throws:", e.dynamicType)
dump(e)
}
do {
try boo()
} catch let e {
print("boo throws:", e.dynamicType)
dump(e)
}
/* prints
foo throws: (Error #1)
▿ (foo () throws -> ()).(Error #1)
- msg: error msg
boo throws: NSError
▿ Error Domain=domain Code=100 "(null)" #0
- NSObject: Error Domain=domain Code=100 "(null)"
*/