[swift] 파일 입출력 에러 핸들링 방법

파일을 읽거나 쓸 때 발생할 수 있는 에러를 처리하는 것은 중요합니다. 파일 입출력 동작 중 에러가 발생하면 적절한 조치를 취해야 합니다. 여기에서는 Swift에서 파일 입출력 에러를 처리하는 방법에 대해 알아보겠습니다.

1. 파일 읽기 에러 핸들링

파일을 읽을 때 발생할 수 있는 에러는 여러 가지가 있을 수 있습니다. 예를 들어, 파일이 존재하지 않거나 권한이 없는 경우 등이 있을 수 있습니다. Swift에서는 do-catch 구문을 사용하여 파일 읽기 동작 중 발생한 에러를 처리할 수 있습니다.

다음은 파일을 읽는 동작 중에 발생한 에러를 처리하는 예제 코드입니다.

let fileURL = URL(fileURLWithPath: "path_to_file")
do {
    let data = try Data(contentsOf: fileURL)
    // 파일 읽기 성공시 처리하는 로직
} catch {
    // 파일 읽기 에러 처리
    print("파일을 읽을 수 없습니다: \(error)")
}

2. 파일 쓰기 에러 핸들링

파일을 쓸 때 발생할 수 있는 에러도 마찬가지로 do-catch 구문을 사용하여 처리할 수 있습니다. 파일을 쓰는 동작 중에 발생한 에러를 처리하는 예제 코드는 다음과 같습니다.

let fileURL = URL(fileURLWithPath: "path_to_file")
do {
    try data.write(to: fileURL, options: .atomic)
    // 파일 쓰기 성공시 처리하는 로직
} catch {
    // 파일 쓰기 에러 처리
    print("파일을 쓸 수 없습니다: \(error)")
}

3. 에러 타입에 따른 처리

파일 입출력 에러는 다양한 종류가 있을 수 있습니다. 예를 들어, 파일이 존재하지 않는 경우와 권한이 없는 경우에 대해 따로 처리해야 할 수 있습니다. Swift에서는 do-catch 구문 내에서 발생한 에러의 타입을 확인하여 각각 다른 처리를 할 수 있습니다.

do {
    // 파일 읽기 또는 쓰기 동작
} catch let error as NSError {
    if error.domain == NSCocoaErrorDomain {
        if let cocoaError = CocoaError(_nsError: error) {
            switch cocoaError {
            case .fileNoSuchFile:
                // 파일이 존재하지 않는 경우 처리
            case .fileWriteNoPermission:
                // 파일에 쓰기 권한이 없는 경우 처리
            default:
                // 기타 파일 입출력 에러 처리
            }
        }
    }
}

위 예제 코드는 do-catch 구문 내에서 발생한 에러의 타입을 확인하여 파일이 존재하지 않거나 권한이 없는 경우에 대해 각각 다른 처리를 하고 있습니다.

파일 입출력 동작 중 발생할 수 있는 다양한 에러를 적절히 처리하여 안정성 있는 애플리케이션을 개발할 수 있습니다.

이상으로 Swift에서 파일 입출력 에러를 핸들링하는 방법에 대해 알아보았습니다.

참고 자료: Swift.org - Error Handling