본문 바로가기
Swift

[iOS] About 예외처리(Error Handling)

by dsungc 2024. 7. 7.

로그인 화면을 구현하면서 예외처리문을 활용해 구현해보았습니다.

 

제가 이번에 진행한 프로젝트에선 닉네임만 받아주었기 때문에,

닉네임에 대한 예외처리만 있습니다!!

 

Representing Errors

 

우선 오류를 담아줄 객체를 정의했습니다.

 

에러타입 정의

 

이 때, 열거형을 사용하는 이유는

열거형이 관련된 오류 조건 그룹을 모델링하는 데 적합하고,

연관된 값을 통해 오류의 특성에 대한 추가 정보를 전달할 수 있기 때문이죠!

+

Error 프로토콜까지! 사용해주면

오류 정의는 끝입니다~

 

이렇게 사용자가 닉네임을 입력한다고 가정했을 때,

 

1. 닉네임 길이가 짧을 때

2. 닉네임 길이가 길 때

3. 닉네임에 특수문자가 있을 때

4. 공백란이 있을 때

5. 숫자가 들어갈 때

 

위의 다섯가지 경우엔 로그인을 하지 못하도록 하기 위해 에러 케이스를 만들어주었습니다.

 

Throwing Errors

 

 

오류를 정의해줬으니 다음은 오류를 던져주려고 합니다.

위의 코드를 보시면 앞서 정의한 오류상황이 일어날 때마다 throw 를 사용하여 오류를 던져주고 있습니다.

 

흐름을 짚기 위해 코드 한줄만 가져와서 설명해보자면,

 

만약 text의 길이가 2 미만일 경우엔 LoginError.short를 던져주게 되는 겁니다!!

쉽죠?

 

나머지 경우도 각 상황에 맞게 제가 정의한 Error를 던져주게 됩니다.

 

Handling Errors

 

위에서 오류를 던져주게 되면 오류처리 단계에 진입하게 됩니다.

 

저는 이 단계에서 do-catch 문을 사용하여 처리해줬습니다.

do-catch 문 사용하여 에러처리

 

 

(저는 에러뿐만 아니라 리터럴한 워닝 메세지역시 열거형으로 정의해줬습니다.)

 

위의 코드에서 우선 do 구문부터 보자면, 

do 구문에는 정상적인 상황에 대한 케이스를 구현해주는 코드입니다.

하지만 try쪽에서 에러가 발생하게 되면 이를 catch 구문으로 넘겨주게 되고,

에러에 해당하는 catch문이 실행됩니다.

 

 

위의 코드를 실행시켜보면

 

닉네임 예외처리 화면

 

 

짜잔~ 쉽죠?

 

 

그런데 제가 한 예외처리는 굉장히 한정적인 상황에 대해 다룬 것이고,

지금처럼 입력 검증뿐만 아니라

네트워크 오류, 서버 응답 처리 등에도 적용하면 꽤나 유용할 것 같습니다.

 

다음에 더 나은 예외처리를 할 수 있는 저를 기대하며 ~

 

.

.

.

.

오늘은 20000

'Swift' 카테고리의 다른 글

[iOS] About FSCalendar - 1  (0) 2024.07.14
[iOS] About 컬렉션뷰 속성  (0) 2024.07.10
[iOS] About 싱글턴 패턴  (0) 2024.06.29
[iOS] About Router pattern  (0) 2024.06.27
[iOS] About Alamofire  (0) 2024.06.23