Swift: Throw, Try, Do-Catch

Snack 남관식·2023년 8월 5일
0

Swift

목록 보기
5/7
post-thumbnail

Throw, Try, Do-Catch

  • 함수에서 발생할 수 있는 에러를 식별, 처리하는 과정을 관리

Throw

  • 함수 내에서 특정 조건에 따라 에러를 발생시키기 위해 사용한다.
  • 발생될 에러의 종류를 enumError 프로토콜을 활용하여 먼저 정의한다.
enum MyError: Error {
    case firstError
    case secondError
}
  • 함수가 에러를 던질 수 있다는 것을 throws를 통해 명시한다.
  • 함수 내부에서 특정 조건에서 throw를 통해 에러를 던질 수 있다.
func someFunction() throws -> String {
	// 에러 조건
	if isSuccess {
    	return "Success!"
    } else {
    	// 에러 던지기
    	throw MyError.firstError
    }
}
  • throw를 통해 에러를 던지는 함수는 반드시 try를 통해 호출해야 한다.

Try, Do-Catch

  • throws 함수는 반드시 try를 통해 호출하고 throw로 던지는 에러에 대한 처리를 해야한다.
  • 에러에 대한 처리는 do-catch문을 통해 catch 블럭에서 해야한다.
// try 키워드를 통해 에러를 던질 수 있는 함수 호출
do {
	let result = try someFunction()
} catch MyError.firstError {
	// 특정 에러 처리
} catch {
	// 다른 에러 처리
}
  • 에러의 종류에 따라 switch문을 통해 케이스별로 처리할 수 있다.
do {
    let result = try someFunction()
} catch {
	// 케이스별 오류 처리
    switch error {
    case MyError.firstError:
        print("first")
    case MyError.secondError:
        print("second")
    default:
        print("default")
    }
}
  • try?는 에러를 던지는 함수의 결과를 옵셔널로 감싸, 에러를 발생할 경우 nil로 반환한다.
  • 때문에 do-catch문 없이도 사용할 수 있다.
// 에러가 발생할 경우 nil로 처리
let result = try? someFunction()
  • try!는 함수가 에러를 던지지 않을 것이라는 확신이 있을 때 사용하며, 만약 함수가 에러를 던지면 런타임 에러가 발생하고 프로그램이 종료되기 때문에 주의해야 한다.
// 에러가 발생할 경우 프로그램 종료
let result = try! someFunction()
profile
iOS Developer | Product Designer @snacknam

5개의 댓글

comment-user-thumbnail
2023년 8월 5일

감사합니다. 이런 정보를 나눠주셔서 좋아요.

1개의 답글
comment-user-thumbnail
2023년 8월 5일

잘 보고 가요. 항상 좋은 정보 공유해주어서 고마워요!

1개의 답글
comment-user-thumbnail
2023년 8월 5일

항상 잘보고 있습니다. 다음글도 기대하고 있어요~

답글 달기

관련 채용 정보