BOID
[swift] 오류처리란? -HoonIOS 본문
안녕하세요 HoonIOS입니다. :)
이번 포스팅에는 오류처리에 대해 알아보겠습니다. :)
프로그램에서 우리가 기능을 구현했으면 그 기능들이 우리가 원하는 대로 무조건 100% 정확하게 동작한다는 보장이 없습니다.
오류는 충분히 생길 수가 있지만 앱이 그냥 종료되는 것을 방지하기 위해서 오류 처리 기능을 사용합니다.
오류처리 기능을 통해 이런 상황들을 구별하여 프로그램 자체적으로도 오류를 해결할 수 있고, 사용자와 상호작용을 통해 오류를 풀어나가는 방향으로 제어를 할 수도 있습니다.
이제부터 오류처리하는것에 대해 설명을 해보겠습니다.
오류처리 정의란?
- Apple documentation에서 Error protocol의 의미로 throw 할 수 있는 에러 값을 나타내는 타입입니다.
- 오류처리는 프로그램이 오류를 일으켰을 때 오류를 감지하고 회복시키는 과정을 말합니다.
- 위에서 말했듯이 프로그램은 우리가 원하는대로 100% 정확하게 동작한다는 보장이 없습니다. 따라서 오류가 생길만한 부분에 오류처리를 해주어야 합니다.
Error 프로토콜
- 스위프트에서 오류는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현이 됩니다.
- Error는 요구사항이 없는 빈 프로토콜이지만 오류를 표현하기 위해서는 열거형 프로토콜을 사용합니다.
- 아래 사진은 프로그램 내에서 자판기를 작동시키려할때 생기는 오류를 열거형으로 표현한 것입니다.
( 야곰의 스위프트 프로그래밍 예시 참조 )
* Error 프로토콜을 채택함으로써 오류처리를 위한 타입임을 알 수 있습니다.
* VendingMachineError의 열거형에 Error프로토콜을 상속했습니다. Error프로토콜은 요구사항이 없으므로 뒤에 case로 오류 표현할 것을 만들어주면 됩니다.
( 열거형을 사용한 이유는 오류 종류를 표현하기 편하고 보기 쉽기 때문에 열거형을 사용하는 것을 추천합니다. )
오류 던지기 throw란?
- 이제 오류를 예상했으니 이 오류 때문에 다음 동작이 안된다면 오류를 던져주어야 합니다.
- 오류를 던져 줄 때는 throw구문을 사용해야 합니다.
오류 포착 및 처리
- 오류를 던지기만 하면 의미가 없습니다..... 오류에 대비해서 던져진 오류를 처리하기 위한 코드도 작성을 해야 합니다.
( 즉, 오류를 알려줬으니 그냥 넘어가는 게 아니고 해결을 해야 되는 건 당연한 거죠? )
- 오류를 알리고 사용자에게 선택 권한을 넘겨주어 다음에 어떤 동작을 하게 할 것인지 결정하도록 유도하는 등의 코드를 작성해야 합니다.
* 스위프트에서 오류를 처리하는 4가지 방법
- 함수에서 발생한 오류를 해당 함수를 호출한 코드에게 알린다.
- do - catch을 이용하여 오류를 처리
- 옵셔널 값으로 오류를 처리 ( try? )
- 오류가 발생하지 않을 것이라고 확신하는 방법 ( try! )
이제는 다음 포스팅 때 오류를 처리하는 방법(4가지)에 대해 알아보겠습니다. (- - ( _ _ ( - -
'swift 시작기' 카테고리의 다른 글
[swift] 오류처리에서 rethrows란? -HoonIOS (0) | 2021.04.08 |
---|---|
[swift] 함수에서 발생한 오류 알리기(try ,try! ,try? , do - catch) - HoonIOS (3) | 2021.04.06 |
[swift] 획득목록(Capture list), 캡쳐리스트 란? -HoonIOS (0) | 2021.04.05 |
[swift] 클로저의 강한참조, 강한참조 순환 - HoonIOS (0) | 2021.04.01 |
[swift] 미소유 옵셔널 참조와 암시적 추출 옵셔널 프로퍼티 - HoonIOS (0) | 2021.04.01 |