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?
}
予期しない例外をキャッチした場合、原因をログに記録できるようにする必要があります。
私はちょうどそれを理解しました。 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)")
}