首页 > 解决方案 > 如何在swift中显示带有多个错误的错误消息?

问题描述

我使用枚举来创建多个错误。但我不知道如何处理这些错误。现在我使用is,as来处理它。我要找到更好的方法来做到这一点。例如:

enum URLError: Error {
    case notConnectedToInternet
    case timeout
    ...
}

enum HTTPError: Error {
    case unauthorized
    ...
}

extension UIViewController {
    func showErrorMessage(_ error: Error) {
         if let error = error as? URLError {
          // handle the URLError
         }
         if let error = error as? HTTPError {
          // handle the HTTPError
         }
    }
}

标签: swifterror-handling

解决方案


我认为最好使用catch子句检查错误的类型,而不是像showErrorMessage.

当您发现错误时,请执行以下操作:

do {
    ...
} catch let error as URLError {
    showURLErrorMessage(error)
} catch let error as HTTPError {
    showHTTPErrorMessage(error)
} catch {
    showGenericErrorMessage(error)
}

其中每个showXXXErrorMessage将接受相应类型的参数:

func showURLErrorMessage(_ error: URLError) {
    ...
}
func showHTTPErrorMessage(_ error: HTTPError) {
    ...
}
func showGenericErrorMessage(_ error: Error) {
    ...
}

推荐阅读