我已经做过一些研究,但我根本不了解Swift中的抛出函数是如何工作的。就像工作原理,语法一样,当您抛出错误时,就像打印它一样?就像您可以使用什么错误一样,您在枚举中声明了什么?
认为func foo() throws -> T
的行为就像func foo() -> Result<T, Error>
,并且带有一些语法糖。
return aResult
只是return .success(aResult)
的语法糖throw e
只是return .failure(e)
的语法糖try! foo()
只是foo().get()
的语法糖catch
只是用于模式匹配语句(如switch
)的语法糖,用于解开值或错误抛出错误实际上是在将Result<Success, Failure>
引入标准库之前,但从概念上讲,它是相同的。
[Swift的错误与异常不同,例如C ++,Java等。
return
的语法糖,所以每个堆栈帧都需要捕获结果/错误,然后将其重新抛出(重新return
它)以进行提升。