programing

스위프트에서 '모두 잡기' 예외의 세부사항을 인쇄하는 방법은?

newstyles 2023. 9. 26. 22:03

스위프트에서 '모두 잡기' 예외의 세부사항을 인쇄하는 방법은?

스위프트를 사용하기 위해 코드를 업데이트하고 있는데, '모두 잡아라' 조항과 일치하는 예외에 대한 오류 정보를 출력하는 방법이 궁금합니다.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?
}

예상치 못한 예외를 발견하게 되면 그 원인이 무엇인지 기록할 수 있어야 합니다.

난 방금 알아냈다.스위프트 설명서에서 다음과 같은 문구를 발견했습니다.

catch 절이 패턴을 지정하지 않으면 절이 일치하여 오류를 명명된 로컬 상수 오류에 바인딩합니다.

그래서 이걸 해봤습니다.

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)")
}

언급URL : https://stackoverflow.com/questions/31352593/how-to-print-details-of-a-catch-all-exception-in-swift