注意:
- 可以定义枚举或结构体,但是都得遵守Error的协议;
- 一个函数可以通过在声明中添加
throws
关键词来抛出错误消息。当你的函数能抛出错误消息时, 你应该在表达式 中前置try
关键词;- 使用
do-catch
块对错误进行捕获,当我们在调用一个throws
声明的函数或方法时,我们必须把调用语句放在do
语句块中,同时do
语句块后面紧接着使用catch
语句块。
特别指出:如果不特别声明,catch
会有一个默认的error
参数来表示捕获到的错误。当然,你也可以如下例那样重新定义一个捕获到的错误的名字。
enum MyErrorEnum: Error {
case errorLessThanZero
case errorMoreThanTen
}
struct MyErrorStruct: Error {
var errCode: Int = 0
var localDes: String {
return "The error code is \(errCode)"
}
}
func mzTestFunc(number: Int) throws -> Int {
if number < 0 {
throw MyErrorEnum.errorLessThanZero
} else if number < 10 {
throw MyErrorEnum.errorMoreThanTen
} else if number == 11 {
throw MyErrorStruct(errCode: 11)
}
return number
}
do {
let res = try mzTestFunc(number: 13)
print(res)
} catch let err {
print(err)
}
网友评论