Error protocol
Swift에서 제공하는 Error protocol은 사실 요구사항이 없는 빈 프로토콜이지만, 오류를 표현하기 위해 enum에 Error를 채택하여 사용한다.
do-catch 구문, try 키워드
오류를 처리하기 위한 4가지 방법은,
1. 함수에서 발생한 오류를 해당 함수를 호출한 코드에 알리기
2. do-catch 구문을 이용하여 오류를 처리하기
3. 옵셔널 값으로 오류를 처리하기
4. 오류가 발생하지 않을 것이라고 확신하기
이 있다.
1. 함수에서 발생한 오류를 해당 함수를 호출한 코드에 알리는 방법
try 키워드로 던져진 오류를 받을 수 있다. 함수, 이니셜라이저의 매개변수 뒤에 throws 키워드를 사용하면 오류를 던질 수 있다.
2. do-catch 구문을 통하여 오류를 처리하기
오류 발생을 받은 코드는 do-catch 구문을 사용하여 오류를 처리해주어야 한다.
do { try ... } catch { ... } 형식으로 사용할 수 있다.
3. 옵셔널 값으로 오류를 처리하기
try? 를 사용하면 함수의 리턴 값을 옵셔널로 반환하여 오류가 있으면 nil, 아니면 optional 한 값이 리턴되도록 하여 오류를 처리할 수 있다.
4. 오류가 발생하지 않을 것이라고 확신하기
try! 는 오류가 발생하지 않을 것이라고 확신할 수 있을 때 사용해야 한다.
실제 오류가 발생하면 런타임 에러가 발생하여 프로그램이 강제 종료된다.
rethrows 키워드
함수나 메소드는 rethrows 키워드를 사용하여 자신의 매개변수로 전달 받은 함수가 오류를 던진다는 것을 나타낼 수 있다.
rethrows 키워드를 사용하여 다시 던지기가 가능하려면, 최소 하나 이상의 오류가 발생 가능한 함수를 매개변수로 전달 받아야 한다.
defer 구문
defer 구문을 통해 현재 코드 블록을 나가기 전에 꼭 실행해야 하는 코드를 작성할 수 있다.
코드에서 오류가 발생했든, 정상적으로 종료했든 상관 없이 코드가 블록을 빠져나가기 전에 무조건 실행되는 것을 보장할 수 있다.
defer 구문은 오류 처리 상황 뿐만 아니라 함수, 메소드, 반복문, 조건문 등 일반적인 코드 블록 어디서든 사용할 수 있다.
defer { ... } 형식으로 사용한다.
여러 개의 defer 구문이 하나의 범위에 포함되어 있을 때에는 하단에 작성된 구문부터 역순으로 실행된다.
'1 - iOS' 카테고리의 다른 글
[SQLite] 테이블, 칼럼 정보 가져오기 (0) | 2022.08.17 |
---|---|
[iOS/Swift] Amplitude를 이용한 사용자 행동 이벤트 로깅 (0) | 2022.08.12 |
[iOS/Swift] CI/CD, 통합 및 배포 자동화 (0) | 2022.08.05 |
[iOS/Swift] Firebase App Distribution 으로 Test를 위한 배포 with fastlane (0) | 2022.07.29 |
[iOS/Swift] Jenkins 설정하기 (0) | 2022.07.25 |