Ron*_*tin 76
错误告诉您封闭的捕获并非详尽无遗.这是因为自动生成的catch块只捕获NSError对象,编译器无法判断是否ErrorType会抛出其他对象.
如果您确定不会抛出其他错误,则可以添加另一个默认catch块:
do {
objects = try managedObjectContext?.executeFetchRequest(request)
} catch let error1 as NSError {
error = error1
objects = nil
} catch {
// Catch any other errors
}
Run Code Online (Sandbox Code Playgroud)
Him*_*jan 10
除了处理您知道函数可以抛出的错误类型之外,还需要使用通用catch块来处理您不知道的错误类型.只需使用额外的catch块并向用户打印一些通用的错误消息.
查看我的自定义错误处理代码.在这里,我创建了一个函数,如果它是奇数且小于100,将打印一个数字.我已经处理了两种类型的错误:Even和tooBig,为此我创建了一个类型为ErrorType的枚举.
enum InvalidNumberError : ErrorType{
case even
case tooBig
}
//MARK: this function will print a number if it is less than 100 and odd
func printSmallNumber(x :Int) throws{
if x % 2 == 0 {
throw InvalidNumberError.even
}
else if x > 100 {
throw InvalidNumberError.tooBig
}
print("number is \(x)")
}
Run Code Online (Sandbox Code Playgroud)
错误处理代码是:
do{
try printSmallNumber(67)
}catch InvalidNumberError.even{
print("Number is Even")
}catch InvalidNumberError.tooBig{
print("Number is greater tha 100")
}catch{
print("some error")
}
Run Code Online (Sandbox Code Playgroud)
最后一个catch块是处理未知错误.
干杯!
| 归档时间: |
|
| 查看次数: |
17074 次 |
| 最近记录: |