Swift: do-catch & try(do-try

作者: yehkong | 来源:发表于2018-03-09 20:08 被阅读31次

序言:标题之所以没有写成do-try-catch,而写成do-catch & try,我个人觉得后者更有助于理解。

  • 首先,swift2开始启用跟swift1不一样的错误处理模式,即do-catch & try。swift1和OC都是用的我们熟悉的(NSError)模式,这种模式,开发者可以传入nil作为(NSError)参数,从而不对错误进行处理,这样的话在有错误发生时,因为没有进行相应的处理,程序会发生运行时退出。
  • 以下简单介绍一下do-catch & try模式:
do-catch & try语法
do {
      try   //throw error语句
      //没有错误发生时的后续语句
}catch {
    //错误处理语句
}
简单一个应用例子如下:
    //自定义错误类型枚举
    enum Yterror: Error{
        case err1
        case err2
        case err3
    }
    //有抛出错误的方法
    func getNetwordData() throws {
        throw Yterror.err1 //抛出错误
    }
    
    //调用函数
    func myMethod() {
        do{
           try getNetwordData() //必须要有try
        }catch let error{
            print("error:\(error)")//捕捉到错误,处理错误
        }
    }
知识点

我们可以理解do-catch语句把try语句包裹起来,try后面必须接用throws 修饰的函数或方法,当这个方法发送错误并throw错误时,由catch语句来捕捉,并进行处理。这样就把do-catch & try几个知识点多串起来了。下面我们针对涉及到的两个知识点简单展开。

    1. 可以抛出错误的方法必须在方法声明的后面加上throws关键字,表示该方法可以抛出错误。当方法没有返回值时,throws放在参数后面;当方法有返回值时,throws放在参数和返回值之间;
 func throwMethod1() throws{
            //方法体
        }
 func throwMethod2(_ parameter:Int8) throws ->(Bool){
            
        }
    1. try?和try!的用法
      使用try?和try!,则可以不用do-catch语句包裹try?和try!,try后面的可以抛出错误的语句不用do-catch包裹。

其中,try?修饰的时候,如果throws方法抛出错误,则方法返回nil,反之如果没有发送错误则返回可选值。

try!修饰的时候,可以打断错误传播链,throws方法的错误不传播给调用者,这样的话一定要去确保程序不发送错误,否则程序会在发生错误时退出。

相关文章

  • Swift: do-catch & try(do-try

    序言:标题之所以没有写成do-try-catch,而写成do-catch & try,我个人觉得后者更有助于理解。...

  • Swift 5.1 (16) - 错误处理

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1 」「try?」「try!」「do-catch」作者: 沐灵...

  • Swift-错误处理

    Swift-错误处理 关键字: throws、throw、 try、 try?、 try!、 do-catch、d...

  • swift 语法 do-catch & try

    语法格式 创建自定义的异常枚举,并遵守 Error 协议 主要涉及关键字 throws、throw 的用法 ps:...

  • try、try?、try!

    try: try与do-catch语句一起使用,并对错误进行详细处理。 try? try?用在错误无关紧要的时候,...

  • swift 语法 do-catch & try错误处理模式

    一、 do-catch & try 语法格式 举例子 ⚠️说明: try 后面必须接用throws修饰的函数,当这...

  • Swfit之try、throw与do catch

    throws: 表明抛出异常,搭配try时需要使用do-catch处理掉异常;使用try?有异常返回空,类似于可选...

  • Error处理,泛型

    swift系列课程 自定义错误 do-catch 处理Error 处理rethrows 处理defer 泛型 关联...

  • Swift - try & as

    Swift - try & as 没啥可说的 1. try 谈到try就不得不先说说Swift的错误处理 Swif...

  • try try? try!

    try try? try! 也是好晕 如这样的情况 报错提示 需要加上 try, try是swift 2...

网友评论

    本文标题:Swift: do-catch & try(do-try

    本文链接:https://www.haomeiwen.com/subject/nyapfftx.html