У меня есть куча ошибок, определенных так:
public enum ClientError: Error {
//...
case badRequest(message: String)
case invalidParameter(message: String)
case notAuthorized(message: String)
case securityFailed(message: String)
//...
}
Etc. Список довольно длинный
Некоторые коды обрабатываются особым образом, но для большинства из них я просто хочу отобразить message
. Однако в настоящее время мы все еще обрабатываем каждый тип ошибки в switch
, поэтому мы можем получить сообщение:
switch(error) {
//...
case badRequest(let message):
displayError(message: message)
case invalidParameter(let message):
displayError(message: message)
case notAuthorized(let message):
someSpecialHandling()
case securityFailed(let message):
displayError(message: message)
//...
}
Так что вместо этого я хотел бы иметь переключатель только для someSpecialHandling
и иметь displayError(message: message)
в случае default
. Проблема в том, как мне получить message
в таком случае?
Вот как я хотел бы, чтобы код выглядел следующим образом:
switch(error) {
//...
case notAuthorized(let message):
someSpecialHandling()
default:
displayError(message: message) <-- how to obtain message here?
//...
}
Или что-то вроде:
switch(error) {
//...
case notAuthorized(let message):
someSpecialHandling()
default:
break
//...
}
let message = //get message from Error somehow
displayError(message: message)
Спасибо