Swift Error Handling

Regular Kim·2026년 5월 16일

기타

목록 보기
26/29

Swift Error Handling

스위프트에서 에러 처리를 할 때 사용하는 try, try?, try!는 에러가 발생할 수 있는 상황을 어떻게 다룰지에 따라 선택해서 사용한다.

try

try는 에러가 발생할 수 있는 메서드를 호출할 때 사용하는 기본적인 방법이다. 이 방식을 사용할 때는 do-catch 블록을 함께 사용해야한다.

func fetchData() throws -> String {
	throw NSError()
}

do {
	let data = try fetchData()
	print("성공: \(data)")
} catch {
	print("에러 발생: \(error)")
}

catch 구문 뒤에 별도의 이름을 지정하지 않으면, Swift가 알아서 암시적 변수인 error에 발생한 에러를 할당해 준다.

try?

try?는 옵셔널로 결과값을 받는다. 에러가 발생하면 nil이 들어있고 성공하면 값이 들어있다. do-catch문을 사용하지 않아도 된다.

// 기본
let data: String? = try? fetchData() // 성공/실패 상관 없이 옵셔널 타입

// 응용
if let safeData = try? fetchData() {
	print("성공: \(safeData)")
} else {
	print("실패해서 nil 반환")
}

보통 if-let이나 guard-let과 함께 사용해서 안전하게 값을 꺼내 사용한다.

try!

try!는 결과를 강제 언래핑한다. 에러가 절대 안 난다고 확신할 때 사용한다. 당연히 에러가 발생하면 앱이 강제 종료된다.

let data: String = try! fetchData()
print(data)

  • 에러 원인을 파악, 처리해야한다? -> try
  • 에러 원인은 몰라도 된다, 실패시 nil 처리만 하면 된다? -> try?
  • 에러는 절대 발생하지 않는다? -> try!
profile
What doesn't kill you, makes you stronger

0개의 댓글