Swift에서는 enum
을 이용해 오류 처리를 할 수 있으며, 이는 Kotlin의 sealed class
와 유사한 기능을 합니다.
Swift에서의 enum 활용
enum FetchError: Error {
case badRequest
case badJSON
}
Swift에서 Error
프로토콜을 채택하면 throw FetchError.badRequest
같은 방식으로 예외를 던질 수 있습니다.
Kotlin에서의 sealed class
sealed class FetchError : Throwable() {
object BadRequest : FetchError()
object BadJSON : FetchError()
}
Swift에서는 sealed class
없이도 enum
만으로 동일한 기능을 구현할 수 있습니다.
프로토콜과 함께 사용하기
Swift의 enum
은 확장이 불가능하지만, 프로토콜을 활용하면 유연한 디자인이 가능합니다.
protocol CustomError: Error {
var message: String { get }
}
enum FetchError: CustomError {
case badRequest
case badJSON
var message: String {
switch self {
case .badRequest: return "잘못된 요청입니다."
case .badJSON: return "JSON 디코딩 실패."
}
}
}
이렇게 하면 에러 메시지를 커스텀하여 사용할 수 있습니다.