Swift - 有没有办法在不抛出错误的情况下匹配错误?

标签 swift

在某些情况下,错误会作为参数提供而不是被抛出。一个示例可能是完成处理程序,其中 Result<T, Error>提供。我想匹配错误而不抛出它。

通过抛出错误匹配的例子:

enum MyError: Error {
    case error
}

func process(error: Error) {
    do {
        throw error
    } catch MyError.error {
        print("this is it")
    } catch {
        print("unknown error")
    }
}

process(error: MyError.error)

更新:

即使对于系统提供的错误,匹配也应该有效,比如 URLError这不是 enum类型。

func process(error: Error) {
    do {
        throw error
    } catch URLError.timedOut {
        print("this is not it")
    } catch URLError.cancelled {
        print("this is it")
    } catch {
        print("unknown error")
    }
}

process(error: URLError(.cancelled))

最佳答案

您可以使用if case 语法。

在你的例子中,

enum MyError: Error {
    case error
}

func process(error: Error) {
    if case MyError.error = error {
        print("this is it")
    } else {
        print("unknown error")
    }
}

process(error: MyError.error)

关于Swift - 有没有办法在不抛出错误的情况下匹配错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51306804/

相关文章:

ios - 类型 'UIImageView' 的值在 swift 4 中没有成员 'kf'

swift - 如何在 UITabbar 中使用所需的投影设置左上角和右上角半径?

ios - 保存 UITableViewCell 配置

xcode - 在 Xcode 单元测试中测量期望时间

swift - 我怎么知道完成 block 没有执行但方法完成了?

Swift 协变泛型函数 : placeholder type is a subclass of another

ios - 锁定 tableView 顶部的搜索栏

swift - 在 userLocation 上创建新的位置指示器

swift - 协议(protocol) : Cannot assign to 'X' in 'Y' in Swift

ios - 如何从 URL Swift 下载图像