
1. 예외처리
- 프로그램을 개발하다 보면 예기치 못한 오류나 버그가 발생한다. 그럴 때는 오류나 버그가 발생하지 않도록 그 상황을 예외처리를 시켜 버그나 오류를 발생시키지 않을 수 있다.
- Swift에서 오류를 처리하는 방법은 4가지 있다.
- 함수에서 발생한 오류를 해당함수를 호출한 코드에 전파하는 방법
- do-catch 구문을 사용한 오류 처리 방법
- optional로 오류 처리하는 방법
- 오류가 발생하지 않을 것이라고 확신하는 방법
2. 함수에서 발생한 오류를 호출한 코드에 전파하는 방법
- guard문과 throws키워드를 사용해 오류를 알리고 함수를 종료시킨다.
func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
guard batteryLevel != -1 else {
throw PhoneError.unknown
}
guard batteryLevel >= 20 else {
throw PhoneError.batteryLow(batteryLow: 20)
}
return "배터리 상태가 정상입니다."
}
3. do-catch 구문을 사용한 오류 처리 방법
do {
try 오류 발생 가능 코드
} catch 오류 패턴 {
처리 코드
}
- do-catch 구문은 do절에서 오류를 던지고, catch 절에서 오류를 전달받아 예외처리를 해주는 형태이다.
do {
try checkPhoneBatterytStatus(batteryLevel: -1)
} catch PhoneError.unknown {
print("알 수 없는 에러입니다.")
} catch PhoneError.battertyLow(let batteryLebel) {
print("배터리 전원 부족 남은 배터린 : \(batteryLebel)%")
} catch {
print("그 외 오류 발생 : \(error)")
}
3. optional로 오류 처리하는 방법
let status = try? checkPhoneBatteryStatus(batteryLevel: 30)
print(status)
try?를 붙여 주면, 오류일 때는 nil을 반환하고, 정상일 때는 optional값을 반환해 준다.
4. 오류가 발생하지 않을 것이라고 확신하는 방법
let status2 = try! checkPhoneBatteryStatus(batteryLevel: 30)
print(status2)
try!를 붙여주면, 오류일 때는 프로그램이 종료되며, 정상일 떄는 optionl값이 벗겨진 값을 반환해 주기 때문에 반드시 오류가 발생하지 않을 떄에만 사용해야 한다.