Swift를 사용하도록 코드를 업데이트하고 있는데 ‘catch all’절과 일치하는 예외에 대한 오류 세부 정보를 인쇄하는 방법이 궁금합니다. 내 요점을 설명하기 위해이 Swift Language Guide 페이지 의 예제를 약간 수정했습니다 .
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 Documentation에서 다음 줄을 발견했습니다.
catch 절이 패턴을 지정하지 않으면 절은 오류를 일치시키고 error라는 로컬 상수에 바인딩합니다.
그래서 나는 이것을 시도했다.
do {
try vend(itemNamed: "Candy Bar")
...
} catch {
print("Error info: \(error)")
}
그리고 그것은 나에게 좋은 설명을주었습니다.
답변
에서 스위프트 프로그래밍 언어 :
경우
catch
절 패턴을 지정하지 않는 조항이 일치하고 바인드라는 로컬 상수 오류합니다error
.
즉 let error
, catch
절에 암시적인 내용 이 있습니다.
do {
// …
} catch {
print("caught: \(error)")
}
또는 let constant_name
유효한 패턴으로 보이므로 오류 상수의 이름을 바꾸는 데 사용할 수 있습니다 (이름 error
이 이미 사용중인 경우 유용 할 수 있음 ).
do {
// …
} catch let myError {
print("caught: \(myError)")
}