如何快速显示带有多个错误的错误消息?

问题描述

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

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
         }
    }
}

解决方法

我认为最好使用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) {
    ...
}