18,Error Handling,for Swift 4.0
This commit is contained in:
@ -12,6 +12,9 @@
|
||||
> 翻译+校对:[shanks](http://codebuild.me) 2016-09-24
|
||||
> 3.0.1,shanks,2016-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`语句。
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user