[swift] Swift 에러 처리

Swift 언어에서는 오류 처리를 위해 do-catch 문을 사용합니다. 이를 통해 예외가 발생할 경우 적절한 처리를 할 수 있습니다.

기본적인 오류 처리

기본적인 오류 처리는 do-catch 구문을 사용하여 처리할 수 있습니다. 예를 들어, 파일을 열고 읽는 동작에서 오류가 발생할 수 있다고 가정해봅시다.

do {
    let file = try openFile(at: path)
    let content = try readFile(file)
    print(content)
} catch FileError.fileNotFound {
    print("파일을 찾을 수 없습니다.")
} catch FileError.accessDenied {
    print("파일에 접근할 권한이 없습니다.")
} catch {
    print("알 수 없는 오류가 발생했습니다.")
}

위의 예제에서 openFile(at:) 함수와 readFile(_:) 함수에서 각각 발생하는 오류들을 처리하고 있습니다. FileError.fileNotFoundFileError.accessDenied는 사용자 정의된 오류 타입입니다. 마지막 catch 블록은 그 외의 모든 오류를 처리합니다.

오류 전파

오류를 전파하는 방법도 제공됩니다. 이를 사용하면 오류를 호출자에게 전달할 수 있습니다. 오류를 전파하기 위해서는 함수 정의에서 throws 키워드를 사용해야 합니다.

func readFile(at path: String) throws -> String {
    guard let file = try openFile(at: path) else {
        throw FileError.fileNotFound
    }
    let content = try readContents(file)
    return content
}

위의 예제에서 readFile(at:) 함수는 openFile(at:) 함수를 호출하고 그 결과가 nil인 경우 FileError.fileNotFound 오류를 발생시킵니다.

오류 처리 매개변수

catch 블록에서 오류를 처리할 때, 오류 매개변수를 사용할 수 있습니다. 이를 통해 오류에 대한 추가 정보를 얻을 수 있습니다.

do {
    // ...
} catch FileError.fileNotFound(let path) {
    print("파일을 찾을 수 없습니다. 경로: \(path)")
} catch FileError.accessDenied(let path) {
    print("파일에 접근할 권한이 없습니다. 경로: \(path)")
} catch {
    print("알 수 없는 오류가 발생했습니다.")
}

위의 예제에서는 catch 블록 내에서 let path를 이용하여 오류에 대한 경로 정보를 얻고 있습니다.

:::tip 오류 처리는 애플리케이션에서 예외 상황을 처리하기 위해 매우 중요합니다. 적절한 오류 처리를 통해 애플리케이션의 안정성을 높일 수 있습니다. :::

더 자세한 내용은 공식 Swift 문서를 참조해주세요.