如何在Swift中打印“catch all”exception的详细信息?
我正在更新我的代码使用Swift,我想知道如何打印错误的详细信息,匹配“catch all”子句的exception。 我稍微修改了这个Swift语言指南页面中的例子来说明我的观点:
do { try vend(itemNamed: "Candy Bar") // Enjoy delicious snack } catch VendingMachineError.InvalidSelection { print("Invalid Selection.") } catch VendingMachineError.OutOfStock { print("Out of Stock.") } catch VendingMachineError.InsufficientFunds(let amountRequired) { print("Insufficient funds. Please insert an additional $\(amountRequired).") } catch { // HOW DO I PRINT OUT INFORMATION ABOUT THE ERROR HERE? }
如果我发现意外的exception,我需要能够logging什么导致它。
我只是想出来了。 我注意到Swift文档中的这一行:
如果一个catch子句没有指定一个模式,那么这个子句将匹配任何错误并将其绑定到名为error的本地常量上
那么,我试过这个:
do { try vend(itemNamed: "Candy Bar") ... } catch { print("Error info: \(error)") }
这给了我一个很好的描述。
从Swift编程语言 :
如果一个
catch
子句没有指定一个模式,那么这个子句将匹配任何错误并将其绑定到名为error
的本地常量上。
也就是说, catch
子句中有一个隐含的let error
:
do { // … } catch { print("caught: \(error)") }
另外,看起来, let constant_name
也是一个有效的模式,所以你可以用它来重命名错误常量(如果名称error
已经在使用,这可能会很方便):
do { // … } catch let myError { print("caught: \(myError)") }