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
- Swift初体验-错误处理
- Swift-Swift初体验
- swift 错误处理
- Swift(十八、错误处理)
- Swift 错误处理
- Swift-错误处理
- Swift 错误处理
- swift 错误处理
- Swift错误处理
- Swift 中的错误处理
- Swift基础 错误处理
- Swift初体验 (一)
- Swift初体验(二)
- Swift初体验(三)
- Swift初体验
- swift初体验
- swift初体验
- Swift初体验
- vs2010 断点失效
- Swift初体验-协议和扩展
- JSP页面乱码
- Batch Normalization 学习笔记
- SIFT算法详解
- Swift初体验-错误处理
- Spring Security Cyclic redirection(Spring Security 循环重定向的问题)
- rowid 简单理解理解
- Fresco 与 android-support-V4 冲突问题解决方案
- 看到的一篇介绍strncpy()函数比较好的文章
- 高效检索
- Unity内置6种着色器
- iOS10全新推送功能的实现
- 微信小程序学习(11)-checkbox控件和label标签