Objective-C 예외 처리 정리
Swift
//
2024년 08월 06일 작성
Objective-C에서도 예외(exceptions) 처리가 가능함을 이제서야 알게 되었다. 간단하게 정리해 보자.
Objective-C 예외 처리 기본
Objective-C에서 예외 처리 루틴은 아래와 같은 문법으로 작성할 수 있다.
@try {
// 예외 발생을 감시할 코드들
}
@catch (SomeAnotherException *e) {
// 특정 예외 감시 가능
}
@catch (NSException *e) {
// 대부분의 예외가 발생할 경우 호출
}
@finally {
// 예외 발생 여부와 상관 없이 try 블럭이 끝나면 이 곳이 호출
// 메모리 해제 루틴을 넣기에 좋은 위치
}
현대적인 언어에서 자주 볼 수 있는 예외 처리 방식이라 굳이 상세히 설명할 필요는 없을 것 같다.
예외 발생시키기
예외를 발생시킬 때는 @throw
를 이용할 수 있다.
@throw [NSException exceptionName:@"MyException"
reason:@"I have no money"
userInfo:nil];
예외 토스하기
예외가 발생하면 이를 더 상위로 던져줘서 거기서 알아서 처리하라고 하고 싶을 때가 있는데 이럴 때는 그냥 @throw
를 쓰기만 해도 된다.
@catch (NSException *e) {
@throw;
}
이렇게 하면 굳이 예외 인스턴스를 적어주지 않아도 알아서 동일한 예외가 발생되므로 상위 레벨에서 예외를 잡을 수 있다.