[iOS_Swift] 예외처리(throw, do_catch, try) _ 22
안녕하세요~ 개발하는 윤기사입니다!!
오늘은 스위프트의 가장 필수적인 요소인 예외처리(오류처리)에 대해 알아보겠습니다!
do_catch, throw와 try를 이용한 예외처리는 프로그램 내에서 에러가 발생한 상황에 대처하기 위한 과정입니다!
Xcode를 사용하다가 런타임 에러가 발생하거나
모든 기능이 개발자가 원하는 대로 동작한다는 보장이 없기 때문에 오류 처리가 꼭 필요합니다!
예외처리를 통해 오류가 상황을 구별하고, 프로그램 자제적으로 오류를 해결하거나
개발자에게 어떤 종류의 에러가 발생했는지 알려주는 역할이 꼭 필요합니다!!
함수를 하나 만들어줍니다. DateFormat의 형태를 확인해주는 함수입니다.
입력한 값이 날짜 형태로 변환이 되는지 안되는지를 구별해주는 겁니다.
validateUserInput이라는 함수를 만들어주고 그 text 값을 확인해 Bool타입으로 반환해줍니다.
1) 입력한 값이 isEmpty를 써서 비어있는지를 확인해줍니다.
2) text에 Int를 씌워줘서 입력한 값이 숫자인지 아닌지를 확인해줍니다.
3) 위에서 만든 checkDateFormat의 text가 날짜 형태로 변환이 되는 숫자인지 아닌지를 확인해줍니다.
validateUserInput의 text값을 "20200101"이라는 숫자를 넣었을 때 값이 비어있지도 않고, 숫자이며, 날짜 형태로 변환이 되는 숫자여서 "검색 가능"이라는 출력 값을 얻을 수 있습니다!
근데 위와 같이 예외처리를 하면, 코드가 너무 길어지고 하나하나 함수를 다 만들어줘야하는 불편함이 생깁니다...!
그래서 우리는 열거형(enum)을 이용한 에러 표현을 정의할 수 있습니다!
예를 들어 Error 종류를 5가지로 나눠봤습니다.
enum의 case를 이용하여 에러가 발생할 수도 있다는 것을 알리기 위해 throws 키워드를 함수 선언부 파라미터 뒤에 붙입니다.
그래서 입력한 text값이 비어있다면 ValidationError의 emptyString을 던져주고,
입력한 값이 숫자인지 아닌지를 판단하여 아니라면 ValidationError의 isNotInt를 던져준다고 생각하시면 됩니다!
마지막으로 do_catch문을 이용하여 do문 안에 위에 만들었던 validateUserInputError의 text값이 정상이면, Success를 출력
ValidationError의 emptyString이면 "EMPTYSTRING"을 출력,
마찬가지로 isNotInt면 "ISNOTINT"를 출력해줍니다.
🍎 맨 위 try는 일단 시도를 해서 throw와 매칭을 해주는 과정이라고 생각하시면 됩니다!
정리하자면, 함수, 메서드, 생성자 중에서 오류를 throw해주면, 그 오류는 do_catch문을 사용해서 오류를 처리해주는 것입니다!
말 그대로 do문에서 오류를 던지고, catch문에서 오류를 전달받아 예외처리를 해주는 거라고 생각하시면 됩니다!
다들 잘 이해가 되셨나요?
try, do_catch문을 이용해서 에러가 발생할 것 같은 상황에서 예외처리를 해주면 앱이 더 잘 동작할 수 있게 해 줄 수 있을 겁니다!
꼭 잘 숙지하셔서 앱 개발 잘해나가셨으면 좋겠습니다 😎
이상 오늘 포스팅은 여기서 마치도록 하고, 개발하는 윤기사는 오늘도 빡코딩하겠습니다 ㅎㅎ