에러 처리란?
프로그램 내에서 에러가 발생한 상황에 대해 대응하고 이를 복구하는 과정입니다.
- 발생(throwing)
- 감지(catching)
- 전파(propagating)
- 조작(manipulating)
enum PhoneError: Error {
case unknown
case batteryLow(batteryLevel: Int)
}
//throw PhoneError.batteryLow(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 baterryLevel) {
print("배터리 전원 부족 남은 배터리 : \(baterryLevel)%") //"배터리 전원 부족 남은 배터리 : 20%\n"
} catch {
print("그 외 오류 발생 : \(error)")
}
let status = try? checkPhoneBatteryStatus(batteryLevel: 30) //"배터리 상태가 정상입니다."
print(status) //"Optional("배터리 상태가 정상입니다.")\n"
let status2 = try! checkPhoneBatteryStatus(batteryLevel: 30) //"배터리 상태가 정상입니다."
print(status2) //"배터리 상태가 정상입니다.\n"
'개발 > Ios(Swift)' 카테고리의 다른 글
IOS 스위프트(Swift) 문법 - 고차함수 (0) | 2021.08.26 |
---|---|
IOS 스위프트(Swift) 문법 - 클로저 (0) | 2021.08.26 |
IOS 스위프트(Swift) 문법 - 옵셔널 체이닝 (0) | 2021.08.25 |
IOS 스위프트(Swift) 문법 - 열거형 (0) | 2021.08.25 |
IOS 스위프트(Swift) 문법 - 익스텐션 (0) | 2021.08.25 |