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