Swift初体验-错误处理

来源:互联网 发布:绿教为什么是邪教知乎 编辑:程序博客网 时间:2024/05/27 20:14
//: [Previous](@previous)// 错误处理import Foundation/** 错误处理:    1. 采用Error协议类型来表示错误    2. throw 来抛出一个错误    3. 使用throws 来表示一个可以抛出错误的函数    4. 如果在函数中抛出一个错误,这个函数会立刻返回并且调用该函数的代码会进行错误处理。 */enum PrintError : Error {    case OutOfPaper    case NoToner    case OnFire}func send(job:Int, toPrinter printerName: String) throws ->String {    if printerName == "never Has Toner" {        throw PrintError.NoToner    }    return "Job sent"}/** 错误捕捉 & 处理 : do-catch    1. do-catch 可以捕捉错误,    2. do-catch 捕捉指定的错误 */do {    let printerResponse =  try send(job: 1040, toPrinter: "Bill Sheng")    print(printerResponse)} catch  {    print(error)}do {    let printerResponse =  try send(job: 1040, toPrinter: "never Has Toner")    print(printerResponse)} catch PrintError.OnFire {    print("I'll just put this over here, with the rest of the fire.")} catch let printErorr as PrintError {    print("Printer error: \(printErorr)")} catch {    print(error)}/** 错误捕捉 & 处理 : try?    1. try? 将值转换为可选的,如果函数抛出错误, 该错误会被抛弃并且结果为 nil    2. 如果不抛出错误,改函数的结果是一个包含函数返回值的可选值 */// 返回类型:String?let printerSuccess = try?send(job: 1884, toPrinter: "Mergenthaler")// 返回类型:String?let printerFailure = try?send(job: 1885, toPrinter: "never Has Toner")/**defer:    1. 表示的是在函数返回前,函数中最后执行的代码    2. 函数无论是否有会抛出错误,都会执行 */var fridgeIsOpen = falselet fridgeContent = ["milk", "eggs", "leftovers"]func fridgeContains(_ food: String) -> Bool {    fridgeIsOpen = true    defer {        fridgeIsOpen = false    }    let result = fridgeContent.contains(food)    return result}fridgeContains("banana")print(fridgeIsOpen)//: [Next](@next)
0 0
原创粉丝点击