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.fileNotFound
와 FileError.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 문서를 참조해주세요.