[swift] 연산자를 정의하여 에러 처리하는 방법

에러 처리를 위해서 Error 프로토콜을 채택한 열거형을 정의합니다.

enum CustomError: Error {
    case outOfBounds
    case invalidInput
}

이제 연산자를 오버로딩하여 해당 연산자가 에러를 처리하도록 구현합니다.

postfix operator ~!

postfix func ~! (result: Result<Int, Error>) throws -> Int {
    switch result {
    case .success(let value):
        return value
    case .failure(let error):
        throw error
    }
}

이제 해당 연산자를 사용하여 에러 처리를 수행할 수 있습니다.

func doSomething() -> Result<Int, Error> {
    let value = 10
    if value > 5 {
        return .success(value)
    } else {
        return .failure(CustomError.outOfBounds)
    }
}

do {
    let result = try doSomething()~!
    // 에러가 발생하지 않으면 이후 로직을 수행합니다.
} catch {
    // 에러가 발생했을 때 처리하는 로직을 작성합니다.
}

이제 연산자를 통해 정의한 에러 처리 방법을 사용하여 에러를 처리할 수 있습니다.