[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 공식 문서를 참고하시기 바랍니다.