Swift - 异常处理

2018-09-06  本文已影响13人  ProfessorFan
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 异常处理是为了让我们程序更安全,平常开发用处不多

上一篇 下一篇

猜你喜欢

热点阅读