[iOS] Swift에서의 오류 처리(Error Handling) 방법과 모범 사례에 대해 설명해 주세요.

Zerom·2024년 2월 8일
0

iOS 질문 답변

목록 보기
7/9
post-thumbnail

답변

  • Swift에서 오류를 처리하는 방법은 크게 Throwing Functions를 이용한 오류 전파, Do-Catch를 이용한 오류 처리, Error를 Optional Values로 변환, 오류 전파 비활성화 4가지로 나눌 수 있습니다.
  • API를 사용할 때 발생할 수 있는 에러들을 Error protocol을 채택한 enum으로 정의하고 Do-Catch안에 Throwing Functions를 호출해 여러 에러에 대응하는 것을 모범 사례로 들 수 있을 것 같습니다.

참고

Throwing Functions를 이용한 오류 전파

  • 함수, 메서드, 이니셜라이저가 에러를 발생시킬 수 있음을 알리기 위해, 매개 변수 선언 뒤에 throws 키워드를 작성하는 방법
  • throws가 표시된 함수를 Throwing Function이라고 부르고 만약 함수가 반환 타입을 지정했다면, 매개 변수 선언과 반환 화살표(->) 사이에 키워드를 적음
func fetchDataAndBringTitle() throws -> String
  • 반환 전에 오류가 발생하면, 오류 객체를 반환한다는 의미
  • 함수 안에 throw와 오류명을 넣어 오류를 반환할 수 있음
  • Throwing Function은 일반적인 함수와 다르기 때문에 일반적으로는 실행할 수 없음
  • 호출하기 위해 항상 try를 앞에 붙여줘야함

Do-Catch를 이용한 오류 처리

  • do-catch문을 사용하여 오류를 처리할 수 있고, throw functions도 호출할 수 있음
  • do 안에서 만약 오류가 발생하게 되면 오류의 종류에 따라 catch문이 실행되게 되어 오류를 처리할 수 있음

Error를 Optional Values로 변환

  • try? 키워드를 사용해 오류를 옵셔널 값으로 변환하여 처리할 수 있음
  • 만약 오류가 try? 표현이 평가되는 도중 발생한다면, 그 표현의 결과는 nil이 됨

오류 전파 비활성화

  • 만약 함수나 메소드가 에러를 발생시키지 않을 것이라고 확신하는 경우, try! 키워드를 사용해 에러 전파를 비활성화하고, 에러가 발생하지 않도록 runtime assertion으로 호출을 래핑할 수 있음
  • 다만 강제 언래핑처럼 실제 에러가 발생한다면 런타임 에러가 나타난다는 단점이 있음
  • 경로에 이미지 리소스를 로드하거나 경로가 없을 경우 에러를 발생시키는 loadImage(atPath:) 함수를 사용할 때 오류 전파 비활성화 방법을 많이 사용함 (이미지는 앱과 함께 제공되기 때문에 런타임 시 에러가 발생하지 않을 것이라고 확신할 수 있기 때문)

참고 사이트 : https://velog.io/@wook4506/iOS-Swift-%EC%98%A4%EB%A5%98-%EC%B2%98%EB%A6%ACError-Handling

profile
꼼꼼한 iOS 개발자 /
Apple Developer Academy @ POSTECH 2기 / 멋쟁이사자처럼 앱스쿨 1기

0개의 댓글