Как распечатать сведения об исключении "catch all" в Swift?
Я обновляю свой код, чтобы использовать Swift, и мне интересно, как печатать данные об ошибках для исключения, которое соответствует предложению "catch all". Я немного изменил пример этой страницы руководства по быстрому языку, чтобы проиллюстрировать мою точку зрения:
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?
}
Если я поймаю неожиданное исключение, мне нужно иметь возможность записывать что-то о том, что вызвало его.
Ответы
Ответ 1
Я просто понял это. Я заметил эту строку в Swift Documentation:
Если предложение catch не указывает шаблон, предложение будет соответствовать и связывать любую ошибку с локальной константой с именем error
Итак, я попробовал это:
do {
try vend(itemNamed: "Candy Bar")
...
} catch {
print("Error info: \(error)")
}
И это дало мне хорошее описание.
Ответ 2
Из Язык Swift программирования:
Если предложение catch
не указывает шаблон, предложение будет соответствовать и связывать любую ошибку с локальной константой с именем error
.
То есть в выражении catch
есть неявный let error
:
do {
// …
} catch {
print("caught: \(error)")
}
В качестве альтернативы, кажется, что let constant_name
также является допустимым шаблоном, поэтому вы можете использовать его для переименования константы ошибки (это может быть удобно, если имя error
уже используется):
do {
// …
} catch let myError {
print("caught: \(myError)")
}