Swift - 异常处理

sun.png

苹果官方文档 -异常处理
中国官方文档 - 异常处理

说明

跟其它语言一样,Swift的异常处理是在程序抛出异常后的处理逻辑。 Swift提供了一流的异常抛出、捕获和处理的能力。跟Java语言类似, Swift的异常并不是真正的程序崩溃, 而是程序运行的一个逻辑分支;Swift和Java捕获异常的时序也是一样的。当Swift运行时抛出异常后并没有被处理, 那么程序就会崩溃。

在Swift语言中使用Error表示异常, 作用同Java的Exception类或Object-C的NSError类。 苹果建议使用枚举作为异常类型(为什么不推荐用类或者结构体?答案是枚举数据类型本身就是分成若干种情况,很适合做逻辑分支判断条件)。

1.定义错误枚举:注意Swift的所有异常类型都继承于Error

  enum ErrorCollection:Error {
            
            case errorOne
            
            case errorTwo
            
            case errorThree
        }

2.定义一个异常函数,只需要在函数的参数后面 添加一个 throws 就可以了(如果函数有返回值,需要在 -> 的前面)

 func canThrowErrors(type:Int) throws -> (String) {
     
//有关于 defer  关键字,就是抛出异常之后会执行的语句,              
   defer {
                
                print("error:\(type)")
            }

    switch type {
            case 1:
                throw ErrorCollection.errorOne
                
            case 2:
                throw ErrorCollection.errorTwo
                
            case 3:
                throw ErrorCollection.errorThree
            default:
                
                break

            }
            
            return "success"
        }

3.异常处理的使用 do catch ,如果得知 " let hh = try canThrowErrors(type: 1)" 抛出异常,我们不希望执行 后面的语句,我们就要使用 try 如果抛出异常也要执行 后面的语句,我们就要使用 try ?,try! 使用不当会让程序奔溃(除非你肯定这句代码不会抛出异常,你就可以用try !)

注意:如果try语句抛出异常则会跳出do代码块,并按顺序逐个catch,当一个catch捕获成功后,后面的catch不再执行

 do {
            let hh = try canThrowErrors(type: 1)
            
            print(hh)
            
            if hh != nil {
                
                print("error:\(hh)")
            }
            
        } catch ErrorCollection.errorOne {
            
            print(ErrorCollection.errorOne)

        }catch ErrorCollection.errorTwo {

            print(ErrorCollection.errorTwo)

        }catch {

            print("error")
            
        }
    
    }

SuperD总结

1.Swift 异常处理是为了让我们程序更安全,平常开发用处不多

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 跟其它语言一样,Swift的异常处理是在程序抛出异常后的处理逻辑。 Swift提供了一流的异常抛出、捕获和处理的能...
    捕梦少女的梦想阅读 4,993评论 2 8
  • swift像其他编程语言一样可以抛出异常并处理异常,本文就详细说一下在swift中抛出并处理异常,swift中的一...
    初光夫阅读 1,000评论 0 51
  • 一.异常的介绍只要我们在编程,就一定要面对错误处理的问题。Swift在设计的时候就尽可能让我们明确感知错误,明确处...
    透支未来阅读 830评论 0 0
  • 菊与刀 这本书说了什么? 这本书讲述了日本的文化,通过介绍日本人的各守其位、亏欠偿报、耻感洗刷、个人情欲、“练达”...
    前座in后座阅读 129评论 0 0