[swift] 에러를 처리하지 않고 전달하는 rethrows 키워드 사용 방법

rethrows 키워드란?

rethrows 키워드는 함수나 메소드가 매개변수로 전달된 throws 함수를 호출하고, 해당 함수가 던지는 에러를 그대로 전달할 수 있음을 나타냅니다. 이는 중첩된 함수나 클로저 등에서 throws 함수를 호출하고, 해당 함수가 던지는 에러를 다시 던지기 위해 유용하게 활용됩니다.

rethrows 사용 방법

다음은 rethrows 키워드를 사용하여 함수 내부에서 매개변수로 전달된 throws 함수를 호출하고, 해당 함수가 던지는 에러를 전달하는 예제입니다.

func performOperation(_ operation: () throws -> Void) rethrows {
    // ...
    try operation()
    // ...
}

위의 예제에서 performOperation 함수는 매개변수로 전달된 operation 호출 시 발생할 수 있는 에러를 그대로 전달하도록 rethrows 키워드를 사용하여 선언되었습니다.

rethrows 예제

다음은 rethrows 키워드가 사용된 예제 코드입니다.

func processFiles(_ files: [String], _ processor: (String) throws -> Void) rethrows {
    for file in files {
        try processor(file)
    }
}

위의 코드에서 processFiles 함수는 파일을 처리하는데, 매개변수로 전달된 processor 클로저가 에러를 던질 수 있도록 throws 키워드로 선언되었습니다. 이때 rethrows 키워드를 사용하여 processor 클로저가 던지는 에러를 전달하도록 하였습니다.

이처럼 rethrows 키워드를 사용하여 함수나 메소드에서 throws 함수를 호출하고, 해당 함수가 던지는 에러를 그대로 다시 던지도록 선언할 수 있습니다.

참고 자료: The Swift Programming Language - Error Handling