gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 06:12:59 24 4
gpt4 key购买 nike

在某些情况下,错误会作为参数提供而不是被抛出。一个示例可能是完成处理程序,其中 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com