프로그램이 실행되는 동안 발생하는 에러를 핸들링 하기 위해 다음을 이용한다. 값의 존재 유무를 판별하는 옵셔널과 다르게 에러처리를 사용하게 되면 에러의 원인을 판별하고 에러를 프로그램의 다른 부분으로 전파할 수 있다.
1. 에러를 반환하는 함수는 선언에 throws 키워드를 포함시켜서 에러가 발생할 수 있음을 나타내준다. 에러를 발생시킬 수 있는 함수를 호출할 때는 표현식 앞에 try 키워드를 붙여야 한다.
func catThrowsError() throws {
// 이 함수는 실행하면서 에러를 발생시킬 수 있을수도 있다.
}
2. 스위프트는 do, catch절에 의해서 에러를 포착한다. 다음 코드를 통해서 에러 처리의 응답 예시를 볼 수 있다.
func makeSandwich() throws {
// 에러를 발생시킬 수 있는 함수를 선언해주었다.
}
do {
try makeSandWich() // 에러를 발생할 수 있는 함수는 다음과 같이 시행된다.
eatASandwich()
} catch SandwitchError.outOfCleanDishes {
washDishes()
} catch SandwitchError.missingOrder {
buyGroceries()
}
// 캐치 구문에서는 발생하는 에러별 상태에 따라서 수행하는 함수를 정의하여 에러를 핸들링 해준다.
지나다니면서 throws를 본 적이 많이 있음에도, 잘 이해하지 못했던 경우가 있는데, 에러를 반환할 수 있는 함수형이라고 이해하면 편할 것 같다. 그리고 에러는 단순히 프로그램이 종료되는 것이 아닌, 에러 타입의 열거형 값을 리턴하는 방식의 새로운 핸들링이 가능하다는 것을 알아야 할 것이다.