Swift 4.0 中的错误处理及抛出错误

在Swift的标准库,很多方法名后都带有’throws’这个关键词, ‘throws’表示该方法在执行过程中遇到错误则抛出,但不会crash。

下面是Swift标准库中的一个构造方法,String、Data都有该构造方法

public init(contentsOf url: URL) throws

当我们通过该方法去构造一个实例时怎么去捕获抛出的错误呢(如果有错误)?

捕获错误

在Swift中是通过 do{}catch{} 去捕获错误, 如下

do {
       let data = try Data(contentsOf: URL(string: "path")!)
       print(data)
    }
    catch {
        print(error)
    }

do{} 遇到错误即可中止,不会继续执行后面代码

自定义错误

 enum registerError: Error {
       case invalidAccount
       case invalidPassword
       case otherError(description: String)
    }

 func register(account: String, pwd: String) throws {
        guard account.characters.count>6 && account.characters.count<16 else {

            throw registerError.invalidAccount
        }

        guard pwd.characters.count>7 && pwd.characters.count<18 else {

            throw registerError.invalidAccount
        }

        // do something
    }

这样自定义错误和使用就完成了。

更多更详细教程请访问个人站点: 码出一个长城

posted @ 2017-10-31 18:27  HarveyCC  阅读(197)  评论(0编辑  收藏  举报