Swift에서 '모두 잡기'예외에 대한 세부 정보를 인쇄하는 방법은 무엇입니까?


84

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?
}

예상치 못한 예외가 발견되면 그 원인에 대해 무언가를 기록 할 수 있어야합니다.

답변:


121

나는 그것을 알아 냈다. Swift Documentation에서 다음 줄을 발견했습니다.

catch 절이 패턴을 지정하지 않으면 절은 오류를 일치시키고 error라는 로컬 상수에 바인딩합니다.

그래서 나는 이것을 시도했다.

do {
    try vend(itemNamed: "Candy Bar")
...
} catch {
    print("Error info: \(error)")
}

그리고 그것은 나에게 좋은 설명을주었습니다.


47

에서 스위프트 프로그래밍 언어 :

경우 catch절 패턴을 지정하지 않는 조항이 일치하고 바인드라는 로컬 상수 오류합니다 error.

let error, catch절에 암시적인 내용 이 있습니다.

do {
    // …
} catch {
    print("caught: \(error)")
}

또는 let constant_name유효한 패턴으로 보이므로 오류 상수의 이름을 바꾸는 데 사용할 수 있습니다 (이름 error이 이미 사용중인 경우 유용 할 수 있음 ).

do {
    // …
} catch let myError {
   print("caught: \(myError)")
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.