Swift 错误处理
- 在 Swift 中使用遵守 Error 协议的类型来表示错误,这是一个来自系统的空协议,凡是遵守该协议的类型都可以用于错误处理 Swift
中枚举类型最适合构建一组相关的错误状态
enum FailError : Error {
case ErrorOne
case ErrorTwo
case ErrorThree
case ErrorFour
}
用 throwing 函数传递错误
抛出错误使用关键字 throw
可能会抛出错误的函数和方法必须在定义时声明,方法是在返回箭头->前添加 throws 关键字,一个标有 throws 关键字的函数被称为 throwing 函数
func TestError(_ num : Int) throws -> String {
switch num {
case 1:
throw FailError.ErrorOne
case 2:
throw FailError.ErrorTwo
case 3:
throw FailError.ErrorThree
case 4:
throw FailError.ErrorFour
default:
return "成功"
}
}
使用do-catch 处理错误
- 可以使用一个 do-catch 语句运行一段闭包代码来处理错误,如果在 do 子句中代码抛出异常,这个错误会在 catch 子句中匹配
从而决定哪条子句能够处理它
do {
try TestError(4)
} catch FailError.ErrorOne {
print("ErrorOne")
} catch FailError.ErrorTwo {
print("ErrorTwo")
} catch FailError.ErrorThree {
print("ErrorThree")
} catch FailError.ErrorFour {
print("ErrorFour")
}
将错误转化为可选值
- 可以使用 try? 将错误转换成一个可选值来处理错误。如果 try?表达式执行时一个错误被抛出,那么表达式的值为 nil
try? TestError(4)
print(try? TestError(5))
if let val = try? TestError(4) {
print("---成功")
} else{
print("---失败")
}
禁用错误传递
- 虽然在程序中使用了 throw 关键字,但是我们可以确保不会抛出任何异常,这是我们就可以表达式前添加 try! 用来强制禁止错误传递
try! TestError(5)
print(try! TestError(5))