[Swift] try-catch
에러 처리
프로그램 내에서 에러가 발생한 상황에 대해 대응하고 이를 복구하는 과정
Swift 에러 처리
- 발생(throwing)
- 감지(catching)
- 전파(propagating)
- 조작(manipulating)
4가지의 일급 클래스를 제공
코드 예시
enum PhoneError : Error {
case unknown
case batteryLow(batteryLevel: Int)
}
// 에러를 던져준다.
//throw PhoneError.batteryLow(batteryLevel: 20)
/*
▿ PhoneError
▿ batteryLow : 1 element
- batteryLevel : 20
*/
func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
guard batteryLevel != -1 else {throw PhoneError.unknown}
guard batteryLevel > 20 else { throw PhoneError.batteryLow(batteryLevel: 20)}
return "배터리 상태가 정상입니다."
}
/*
do {
try 오류 발생 가능 코드
} catch 오류 패턴 {
처리 코드
}
*/
do {
try checkPhoneBatteryStatus(batteryLevel: 20)
} catch PhoneError.unknown{
print("알수 없는 에러입니다.")
} catch PhoneError.batteryLow(let batteryLevel){
print("배터리 전원 부족! 남은 배터리 : \(batteryLevel)")
} catch {
print("그 외 오류 발생 : \(error)")
}
let status = try? checkPhoneBatteryStatus(batteryLevel: 30)
//print(status) // nil (in batteryLevel : -1)
print(status) // Optional("배터리 상태가 정상입니다.") (in batteryLevel : 30)
let status2 = try! checkPhoneBatteryStatus(batteryLevel: 30)
// 에러가 절대로 발생하지 못하는 상황
print(status2) // "배터리 상태가 정상입니다."
Author And Source
이 문제에 관하여([Swift] try-catch), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@daeseongkim/Swift-try-catch저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)