[swift] 클로저 예외 처리

이 포스트에서는 Swift에서 클로저에서 발생하는 예외를 처리하는 방법에 대해 알아보겠습니다.

클로저 예외 처리란?

클로저는 예외를 던질 수 있고, 호출하는 곳에서 해당 예외를 처리할 수 있습니다. 따라서 클로저를 호출할 때 예외 처리를 함께 해주어야 합니다.

클로저에서 예외 던지기

클로저에서 예외를 던지기 위해서는 throws 키워드를 사용하여 클로저 시그니처에 예외를 던질 수 있다는 것을 명시해야 합니다.

예를 들어, 다음과 같은 클로저가 있다고 가정해보겠습니다.

let divide: (Int, Int) -> Int = { (a, b) throws -> Int in
    guard b != 0 else {
        throw DivisionError.divideByZero
    }
    return a / b
}

위의 코드에서 throws 키워드는 클로저가 예외를 던질 수 있다는 것을 나타내고, 클로저 내부에서 throw를 사용하여 예외를 던질 수 있게 됩니다.

클로저를 호출하는 곳에서 예외 처리하기

클로저를 호출하는 곳에서는 do-catch 구문을 통해 예외를 처리할 수 있습니다.

do {
    let result = try divide(4, 0)
    print(result)
} catch DivisionError.divideByZero {
    print("Cannot divide by zero!")
}

위의 예제에서 do 블록 내부에서 try 키워드를 사용하여 클로저를 호출하고, 예외가 발생하는 경우에는 catch 블록에서 해당 예외를 처리할 수 있습니다.

클로저에서 예외를 던지고, 호출하는 곳에서 예외를 처리하는 방법에 대해 간단히 알아보았습니다. 클로저를 사용할 때 예외 처리에 대해 잘 이해하고 사용하면 안전하고 신뢰성 있는 코드를 작성할 수 있습니다.

참고 자료