[swift] Swift 구조체에서 사용되는 에러 처리 방법에 대해 알려주세요.

Swift에는 구조체(struct)도 에러를 처리하는 데에 쓰일 수 있습니다. 이에 대해 알아봅시다.

에러 표현하기

구조체에서 에러를 표현하기 위해 Error 프로토콜을 준수하는 열거형을 정의할 수 있습니다. 이를 통해 구조체에서 발생한 에러를 정의하고 표현할 수 있습니다.

enum FileError: Error {
    case notFound
    case permissionDenied
}

에러 던지기

구조체 내에서 에러를 던지려면 throw 키워드를 사용하여 에러를 던질 수 있습니다.

struct FileManager {
    func readFile(named name: String) throws -> String {
        if !fileExists(named: name) {
            throw FileError.notFound
        }
        guard hasPermissionToRead() else {
            throw FileError.permissionDenied
        }
        return "File contents"
    }
}

에러 처리하기

에러를 던지면 호출자는 do-catch 문을 사용하여 에러를 처리할 수 있습니다. 호출자가 에러를 처리하지 않는다면, 예외가 상위 호출자를 거슬러 올라가게 됩니다.

let fileManager = FileManager()
do {
    let contents = try fileManager.readFile(named: "example.txt")
    print(contents)
} catch {
    print("An error occurred: \(error)")
}

이와 같은 방식으로 구조체에서도 에러를 처리할 수 있습니다.

결론

Swift 구조체에서도 에러를 처리하는 것은 매우 간단하며, 함수가 에러를 던지고 호출자가 이를 처리할 수 있도록 하는 것이 가능합니다.

더 자세한 내용은 Swift 공식 문서를 참고하시기 바랍니다.