Swift:使用参数捕获错误情况,但可以访问错误对象

问题描述 投票:0回答:1

我想捕获带有参数的自定义错误,但也可以访问该错误以在其上调用某些函数。你是怎样做的? (我不想只捕获CustomError并在catch块内进行切换。)

enum CustomError: Error {
    case error(code: Int) 
    func describe() -> String {
        ...
    }
}
...

do {
    try bad()
} catch let error as CustomError.error(let code) { // This doesn't work
    print(error.describe())
} catch { 
    ....
}
ios swift error-handling enums try-catch
1个回答
1
投票

有点重复,但是通读语言参考之后,我认为没有办法优雅地做到这一点:

do {
    try bad()
} catch CustomError.error(let code) {
    print(CustomError.error(code: code).describe())
} catch {

}

这利用了code和情况.errorCustomError仅有的两种状态的事实。这意味着我们可以重新创建错误对象,并在其上调用describe

© www.soinside.com 2019 - 2024. All rights reserved.