在 Swift 中,`throws` 和 `rethrows` 是处理异常的关键词,它们主要用于函数签名中,描述函数可能抛出的异常或函数可能接收的异常。 1. `throws`:当一个函数可能在其执行过程中抛出一个异常时,我们可以在函数定义中使用 `throws` 关键字。这意味着该函数可能会在某些条件下引发一个异常,因此在调用该函数时,我们需要用 `do-catch` 语句来捕获并处理可能抛出的异常。例如: ```swift func divide(dividend: Int, divisor: Int) throws -> Int { if divisor == 0 { throw DivideByZeroError() } return dividend / divisor } ``` 在上面的例子中,`divide` 函数可能会抛出一个 `DivideByZeroError` 异常,所以我们使用 `throws` 关键字来表示这一点。如果在调用这个函数时,我们不确定是否会传入一个零除数,那么我们可以用 `do-catch` 语句来捕获并处理这个异常: ```swift do { let result = try divide(dividend: 10, divisor: 0) print(result) } catch { print("Error: \(error)") } ``` 2. `rethrows`:当一个函数接收其他可能抛出异常的函数作为参数时,我们可以使用 `rethrows` 关键字。这意味着该函数会重新抛出它接收的函数抛出的任何异常。例如: ```swift func performOperation(_ operation: () throws -> Int) rethrows -> Int { do { return try operation() } catch { print("Error: \(error)") return 0 } } ``` 在上面的例子中,`performOperation` 函数接收一个可能会抛出异常的函数作为参数,并且它自己也会重新抛出这个异常。如果在调用这个函数时,我们传入了一个可能会抛出异常的函数,那么我们需要用 `do-catch` 语句来捕获并处理这个函数可能抛出的异常: ```swift do { let result = try performOperation { throw MyError.someError } print(result) } catch { print("Error: \(error)") } ``` [2023-11-09 17:44:03 | AI问答 | 505点数解答]