[swift] 비동기 작업의 에러 처리 방법
비동기 작업을 수행할 때, 에러 처리는 매우 중요합니다. 에러 처리를 올바르게 수행하지 않으면 애플리케이션이 비정상적으로 종료될 수 있습니다. 이번 글에서는 Swift에서 비동기 작업의 에러를 처리하는 방법을 알아보겠습니다.
1. completionHandler를 활용한 에러 처리
가장 기본적인 방법은 completionHandler를 사용하여 에러를 처리하는 것입니다. 아래는 completionHandler를 통해 에러를 처리하는 예제 코드입니다.
func fetchData(completion: @escaping (Result<Data, Error>) -> Void) {
// 비동기 작업 수행
// 결과를 completionHandler를 통해 전달
if let data = fetchedData {
completion(.success(data))
} else {
let error = NSError(domain: "com.example", code: 500, userInfo: [NSLocalizedDescriptionKey: "Data not found"])
completion(.failure(error))
}
}
// 사용 예
fetchData { result in
switch result {
case .success(let data):
// 데이터 처리
case .failure(let error):
// 에러 처리
print("Error: \(error.localizedDescription)")
}
}
2. async/await 구문을 활용한 에러 처리
Swift 5.5부터는 async/await 구문을 활용하여 비동기 작업을 더 쉽게 처리할 수 있습니다. 아래는 async/await 구문을 통해 에러를 처리하는 예제 코드입니다.
func fetchData() async throws -> Data {
// 비동기 작업 수행
if let data = fetchedData {
return data
} else {
throw MyError.dataNotFound
}
}
// 사용 예
do {
let data = try await fetchData()
// 데이터 처리
} catch {
// 에러 처리
print("Error: \(error.localizedDescription)")
}
결론
비동기 작업에서의 에러 처리는 completionHandler와 async/await를 통해 각각 다르게 구현할 수 있습니다. 적합한 방법을 선택하여 안정적인 애플리케이션을 구축하는 데 도움이 될 것입니다.
참고: Swift documentation on async/await