18,Error Handling,for Swift 4.0

This commit is contained in:
kemchenj
2017-09-22 22:13:57 +08:00
parent 00b6cfcb2c
commit d222669668

View File

@ -12,6 +12,9 @@
> 翻译+校对:[shanks](http://codebuild.me) 2016-09-24
> 3.0.1shanks2016-11-13
> 4.0
> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21
本页包含内容:
- [表示并抛出错误](#representing_and_throwing_errors)
@ -231,9 +234,9 @@ let photo = try! loadImage(atPath: "./Resources/John Appleseed.jpg")
<a name="specifying_cleanup_actions"></a>
## 指定清理操作
可以使用`defer`语句在即将离开当前代码块时执行一系列语句。该语句让你能执行一些必要的清理工作,不管是以何种方式离开当前代码块的——无论是由于抛出错误而离开,是由于诸如`return`或者`break`的语句。例如,你可以用`defer`语句来确保文件描述符得以关闭,以及手动分配的内存得以释放。
可以使用`defer`语句在即将离开当前代码块时执行一系列语句。该语句让你能执行一些必要的清理工作,不管是以何种方式离开当前代码块的——无论是由于抛出错误而离开,是由于诸如`return``break`的语句。例如,你可以用`defer`语句来确保文件描述符得以关闭,以及手动分配的内存得以释放。
`defer`语句将代码的执行延迟到当前的作用域退出之前。该语句由`defer`关键字和要被延迟执行的语句组成。延迟执行的语句不能包含任何控制转移语句,例如`break`或是`return`语句,或是抛出一个错误。延迟执行的操作会按照它们被指定时的顺序的相反顺序执行——也就是说,第一条`defer`语句中的代码会在第二条`defer`语句中的代码被执行之后才执行,以此类推。
`defer`语句将代码的执行延迟到当前的作用域退出之前。该语句由`defer`关键字和要被延迟执行的语句组成。延迟执行的语句不能包含任何控制转移语句,例如`break``return`语句,或是抛出一个错误。延迟执行的操作会按照它们声明的顺序从后往前执行——也就是说,第一条`defer`语句中的代码最后才执行,第二条`defer`语句中的代码倒数第二个执行,以此类推。最后一条语句会第一个执行
```swift
func processFile(filename: String) throws {
@ -254,3 +257,5 @@ func processFile(filename: String) throws {
> 注意
> 即使没有涉及到错误处理,你也可以使用`defer`语句。