我定义了一个错误类型“HelloError”,在多次调用之后,我不得不使用作为向下转换! 和do-catch块中的错误。
enum HelloError: Error {
case A
case B
}
func hello() throws {
try helloAgain()
}
func helloAgain() throws {
throw HelloError.A
}
do {
try hello()
} catch {
switch error as! HelloError {
case .A:
print("A")
case .B:
print("B")
}
}
是否有可能在不降低错误类型的情况下捕获错误?我想写这样的代码:
do {
try hello()
} catch {
switch error {
case HelloError.A:
print("A")
case HelloError.B:
print("B")
}
}
谢谢。
最佳答案
您可以使用多个catch
块进行切换
do {
try hello()
} catch HelloError.A {
print("A")
} catch HelloError.B {
print("B")
}
更详细的信息在Swift Language Guide: Error handling中