enum MyErrorType:ErrorType {
case error1NameisNil
case error2NameLengthis0
}
func testThrows (name:String?) throws {
guard name != nil else {
throw MyErrorType.error1NameisNil
}
guard name!.characters.count > 0 else {
throw MyErrorType.error2NameLengthis0
}
print("\(name)")
}
//我们不需要捕抓错误,那么我们可以使用try!或try?去执行该函数
//不建议使用try!,使用try?会更加安全。因为如果当有错误捕抓到时,程序会直接崩溃
try? testThrows("")
//如果只包含一个catch语句,那么所有的错误都会在这个catch中执行,我们能够捕抓其错误信息
do {
try testThrows(nil)
} catch let error as NSError {
print(error)
}
do {
try testThrows("")
} catch let error as NSError {
print(error)
}
//我们在使用catch时,它是能够进行模式匹配的,我们能够进行更精准的错误匹配处理
do {
try testThrows("")
} catch MyErrorType.error1NameisNil {
print("error1NameisNil")
} catch MyErrorType.error2NameLengthis0 {
print("error2NameLengthis0")
}