Swift 4.0 中的错误处理及自定义抛出错误

Swfit4.0 学习 2018-03-22 已阅 316 次

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

下面是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
}

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


本文由 Harvey 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

还不快抢沙发

添加新评论