18,Error Handling,for Swift 4.0
This commit is contained in:
@ -12,6 +12,9 @@
|
|||||||
> 翻译+校对:[shanks](http://codebuild.me) 2016-09-24
|
> 翻译+校对:[shanks](http://codebuild.me) 2016-09-24
|
||||||
> 3.0.1,shanks,2016-11-13
|
> 3.0.1,shanks,2016-11-13
|
||||||
|
|
||||||
|
> 4.0
|
||||||
|
> 校对:[kemchenj](https://kemchenj.github.io/) 2017-09-21
|
||||||
|
|
||||||
本页包含内容:
|
本页包含内容:
|
||||||
|
|
||||||
- [表示并抛出错误](#representing_and_throwing_errors)
|
- [表示并抛出错误](#representing_and_throwing_errors)
|
||||||
@ -231,9 +234,9 @@ let photo = try! loadImage(atPath: "./Resources/John Appleseed.jpg")
|
|||||||
<a name="specifying_cleanup_actions"></a>
|
<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
|
```swift
|
||||||
func processFile(filename: String) throws {
|
func processFile(filename: String) throws {
|
||||||
@ -254,3 +257,5 @@ func processFile(filename: String) throws {
|
|||||||
|
|
||||||
> 注意
|
> 注意
|
||||||
> 即使没有涉及到错误处理,你也可以使用`defer`语句。
|
> 即使没有涉及到错误处理,你也可以使用`defer`语句。
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user