Swift 面试题
目录

Swift 中什么是错误处理 (Error Handling)?

· 约 5 分钟读完 · 第 126 / 196 章

推荐答案

在 Swift 中,错误处理(Error Handling)是一种机制,用于处理程序运行时可能发生的错误或异常情况。Swift 提供了 throw、try、catch 和 do 等关键字,以及 Error 协议,来帮助开发者优雅地处理错误。

关键点:

  1. Error 协议:自定义错误类型需要遵循 Error 协议。
  2. 抛出错误:使用 throw 关键字抛出错误。
  3. 捕获错误:使用 do-catch 语句捕获并处理错误。
  4. 可选 try:使用 try? 将可能抛出错误的表达式转换为可选值。
  5. 强制 try:使用 try! 强制解包可能抛出错误的表达式,但如果发生错误会导致运行时崩溃。

示例代码:


本题详细解读

1. 错误类型定义

在 Swift 中,错误类型通常是一个枚举,并且遵循 Error 协议。例如:

通过枚举定义错误类型,可以清晰地表示不同的错误情况。

2. 抛出错误

使用 throw 关键字可以在函数中抛出错误。例如:

如果 urlString 无法转换为有效的 URL,函数会抛出 NetworkError.badURL 错误。

3. 捕获错误

使用 do-catch 语句可以捕获并处理错误。例如:

catch 块可以针对特定的错误类型进行处理,也可以使用通用的 catch 块捕获所有错误。

4. 可选 try 和强制 try

  • 可选 try (try?):将可能抛出错误的表达式转换为可选值。如果发生错误,结果为 nil。

  • 强制 try (try!):强制解包可能抛出错误的表达式。如果发生错误,程序会崩溃。

5. 错误传播

如果一个函数可能抛出错误,可以在函数声明中使用 throws 关键字。调用该函数时,必须使用 try 关键字来处理可能的错误。

6. defer 语句

defer 语句用于在函数返回前执行一些清理操作,无论函数是否抛出错误。例如:

即使 processFile 函数抛出错误,closeFile 也会在函数返回前执行。

通过以上机制,Swift 提供了一种强大且灵活的错误处理方式,帮助开发者编写更健壮的代码。