我正在更新我的代码以使用Swift,我想知道如何打印与'catch all'子句匹配的异常的错误详细信息.我稍微修改了这个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?
}
Run Code Online (Sandbox Code Playgroud)
如果我遇到意外的异常,我需要能够记录导致它的原因.
mar*_*314 113
我刚想通了.我在Swift文档中注意到这一行:
如果catch子句未指定模式,则该子句将匹配并将任何错误绑定到名为error的本地常量
那么,我试过这个:
do {
try vend(itemNamed: "Candy Bar")
...
} catch {
print("Error info: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
它给了我一个很好的描述.
Ark*_*kku 43
来自Swift编程语言:
如果
catch子句未指定模式,则该子句将匹配并将任何错误绑定到名为的本地常量error.
也就是说,子句中有一个隐含let error的内容catch:
do {
// …
} catch {
print("caught: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
或者,它似乎let constant_name也是一个有效的模式,因此您可以使用它来重命名错误常量(如果名称error已经在使用中,这可能会很方便):
do {
// …
} catch let myError {
print("caught: \(myError)")
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26088 次 |
| 最近记录: |