错误的捕获和处理
throws关键字用于抛出错误。do-catch用户捕获代码中可能出现的一场并妥善处理异常。
//定义一个错误枚举,遵循Error协议
enum PersonError:String,Error{
case PersonErrorDoNotEatBreakfast = "不吃早餐"
case PersonErrorDoNotTakeExercise = "不锻炼"
}
class Person{
var age:Int
var name:String
init(name:String,age:Int){
self.name = name
self.age = age
}
func haveBreakfast(param:Bool) throws{
if(!param){
print("\(self.name)不想吃早餐")
throw PersonError.PersonErrorDoNotEatBreakfast
}else{
print("\(self.name)有在乖乖地吃早餐")
}
}
}
var xiaoMing = Person(name: "xiaoMing", age: 18)
do{//do-try尝试运行下面的代码
try xiaoMing.haveBreakfast(param: true)
}catch PersonError.PersonErrorDoNotEatBreakfast{//捕获抛出的异常
print("女朋友死死盯着你监督你吃早餐")
}catch PersonError.PersonErrorDoNotTakeExercise{//捕获抛出的异常
print("医生苦口婆心地劝你注意健康多锻炼")
}
defer{//最终无论抛出的错误结果是如何都会执行的代码
print("到钟上班")
}
运行结果:
xiaoMing有在乖乖地吃早餐
到钟上班
现在修改一下,抛出异常:
try xiaoMing.haveBreakfast(param: false)
运行结果:
xiaoMing不想吃早餐
女朋友死死盯着你监督你吃早餐
到钟上班