BOID

[swift] 오류처리란? -HoonIOS 본문

swift 시작기

[swift] 오류처리란? -HoonIOS

HoonIOS 2021. 4. 6. 11:05
728x90

안녕하세요 HoonIOS입니다. :)

이번 포스팅에는 오류처리에 대해 알아보겠습니다. :)

 

프로그램에서 우리가 기능을 구현했으면 그 기능들이 우리가 원하는 대로 무조건 100% 정확하게 동작한다는 보장이 없습니다.

 

오류는 충분히 생길 수가 있지만 앱이 그냥 종료되는 것을 방지하기 위해서 오류 처리 기능을 사용합니다.

오류처리 기능을 통해 이런 상황들을 구별하여 프로그램 자체적으로도 오류를 해결할 수 있고, 사용자와 상호작용을 통해 오류를 풀어나가는 방향으로 제어를 할 수도 있습니다.

 

 이제부터 오류처리하는것에 대해 설명을 해보겠습니다.

오류처리 정의란?

- Apple documentation에서 Error protocol의 의미로 throw 할 수 있는 에러 값을 나타내는 타입입니다.

- 오류처리는 프로그램이 오류를 일으켰을 때 오류를 감지하고 회복시키는 과정을 말합니다.

- 위에서 말했듯이 프로그램은 우리가 원하는대로 100% 정확하게 동작한다는 보장이 없습니다. 따라서 오류가 생길만한 부분에 오류처리를 해주어야 합니다.

 

 * 다만 오류처리기능은 운영체제와 같은 우리가 작성하는 소스, 응용프로그램 외부에서 발생하는 오류는 처리를 할수 없습니다.

Error 프로토콜

- 스위프트에서 오류는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현이 됩니다.

- Error는 요구사항이 없는 빈 프로토콜이지만 오류를 표현하기 위해서는 열거형 프로토콜을 사용합니다.

 

- 아래 사진은 프로그램 내에서 자판기를 작동시키려할때 생기는 오류를 열거형으로 표현한 것입니다.

( 야곰의 스위프트 프로그래밍 예시 참조 )

 

* Error 프로토콜을 채택함으로써 오류처리를 위한 타입임을 알 수 있습니다.

* VendingMachineError의 열거형에 Error프로토콜을 상속했습니다. Error프로토콜은 요구사항이 없으므로 뒤에 case로 오류 표현할 것을 만들어주면 됩니다.
( 열거형을 사용한 이유는 오류 종류를 표현하기 편하고 보기 쉽기 때문에 열거형을 사용하는 것을 추천합니다. )

 

오류 던지기 throw란?

- 이제 오류를 예상했으니 이 오류 때문에 다음 동작이 안된다면 오류를 던져주어야 합니다. 

- 오류를 던져 줄 때는 throw구문을 사용해야 합니다.

 

오류 포착 및 처리

- 오류를 던지기만 하면 의미가 없습니다..... 오류에 대비해서 던져진 오류를 처리하기 위한 코드도 작성을 해야 합니다.
( 즉, 오류를 알려줬으니 그냥 넘어가는 게 아니고 해결을 해야 되는 건 당연한 거죠? )

- 오류를 알리고 사용자에게 선택 권한을 넘겨주어 다음에 어떤 동작을 하게 할 것인지 결정하도록 유도하는 등의 코드를 작성해야 합니다.

 

* 스위프트에서 오류를 처리하는 4가지 방법

  1. 함수에서 발생한 오류를 해당 함수를 호출한 코드에게 알린다.
  2. do - catch을 이용하여 오류를 처리
  3. 옵셔널 값으로 오류를 처리 ( try? )
  4. 오류가 발생하지 않을 것이라고 확신하는 방법 ( try! )

이제는 다음 포스팅 때 오류를 처리하는 방법(4가지)에 대해 알아보겠습니다. (- - ( _ _ ( - -

반응형
Comments