[TIL] Swift - 예외처리

신승현·2024년 2월 6일

TIL

목록 보기
17/72

1. 예외처리

  • 프로그램을 개발하다 보면 예기치 못한 오류나 버그가 발생한다. 그럴 때는 오류나 버그가 발생하지 않도록 그 상황을 예외처리를 시켜 버그나 오류를 발생시키지 않을 수 있다.
  • Swift에서 오류를 처리하는 방법은 4가지 있다.
  1. 함수에서 발생한 오류를 해당함수를 호출한 코드에 전파하는 방법
  2. do-catch 구문을 사용한 오류 처리 방법
  3. optional로 오류 처리하는 방법
  4. 오류가 발생하지 않을 것이라고 확신하는 방법

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)

//prints optional("배터리 상태가 정상입니다.")
  • try?를 붙여 주면, 오류일 때는 nil을 반환하고, 정상일 때는 optional값을 반환해 준다.

4. 오류가 발생하지 않을 것이라고 확신하는 방법

let status2 = try! checkPhoneBatteryStatus(batteryLevel: 30)
print(status2)

//prints "배터리 상태가 정상입니다."
  • try!를 붙여주면, 오류일 때는 프로그램이 종료되며, 정상일 떄는 optionl값이 벗겨진 값을 반환해 주기 때문에 반드시 오류가 발생하지 않을 떄에만 사용해야 한다.
profile
개발자

0개의 댓글