Swift 面试题
目录

Swift 中 defer 语句的执行时机是什么?

· 约 4 分钟读完 · 第 35 / 196 章

推荐答案

在 Swift 中,defer 语句用于在当前作用域退出时执行一段代码。无论作用域是通过正常流程退出,还是通过抛出异常、返回语句或 break 语句退出,defer 语句中的代码都会被执行。

本题详细解读

1. defer 的基本用法

defer 语句用于在当前作用域退出时执行一段代码。它的主要用途是确保某些清理操作(如关闭文件、释放资源等)在作用域结束时一定会被执行,即使发生了错误或提前返回。

2. defer 的执行顺序

在一个作用域内,可以有多个 defer 语句。它们的执行顺序是“后进先出”(LIFO),即最后一个 defer 语句中的代码会最先执行。

3. defer 的作用域

defer 语句的作用域是当前的代码块。如果 defer 语句在函数内部,那么它会在函数返回时执行;如果 defer 语句在循环或条件语句内部,它会在该循环或条件语句结束时执行。

4. defer 与异常处理

defer 语句在抛出异常时也会被执行,这使得它非常适合用于资源清理操作。

5. defer 的限制

  • defer 语句不能包含控制转移语句,如 return、break 或 continue。
  • defer 语句不能捕获或抛出异常。

通过以上几点,可以清楚地理解 defer 语句在 Swift 中的执行时机和使用场景。