首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift 2.0中,不会为do {} catch处理从此处引发的错误

在Swift 2.0中,不会为do {} catch处理从此处引发的错误
EN

Stack Overflow用户
提问于 2015-09-18 18:44:24
回答 2查看 23.7K关注 0票数 37

在我更新了swift 2.0之后,我得到了一个关于do { try } catch like a image的错误。

我该如何解决这个问题呢?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-19 05:20:05

该错误告诉您封闭的catch不是详尽的。这是因为自动生成的catch块只捕获NSError对象,而编译器无法判断是否会抛出其他ErrorType

如果您确定不会抛出其他错误,则可以添加另一个默认catch块:

代码语言:javascript
复制
do {
    objects = try managedObjectContext?.executeFetchRequest(request)
} catch let error1 as NSError {
    error = error1
    objects = nil
} catch {
    // Catch any other errors 
}
票数 96
EN

Stack Overflow用户

发布于 2016-05-07 19:07:08

除了处理函数可以抛出的错误类型外,还需要使用通用catch块来处理不知道的错误类型。只需使用额外的catch块,并将一些通用的错误消息打印给用户。

请参阅我的自定义错误处理代码。在这里,我创建了一个函数,如果数字是奇数且小于100,它将打印该数字。我处理过两种类型的错误: Even和tooBig,为此我创建了一个ErrorType类型的枚举。

代码语言:javascript
复制
   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)")
   }

错误处理代码为:

代码语言:javascript
复制
    do{
        try printSmallNumber(67)
    }catch InvalidNumberError.even{
        print("Number is Even")
    }catch InvalidNumberError.tooBig{
        print("Number is greater tha 100")
    }catch{
        print("some error")
    }

最后一个catch块用于处理未知错误。

干杯!

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32650050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档