我定义了一个名为“HelloError”的错误类型,在多次调用之后,我必须使用 as! 和 do-catch block 中的错误进行向下转换。
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
block 执行 switch
do {
try hello()
} catch HelloError.A {
print("A")
} catch HelloError.B {
print("B")
}
更多详细信息请参阅 Swift Language Guide: Error handling
关于swift - 在没有向下转换错误的情况下处理 Swift 4.2 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492333/