В моем приложении есть образец enum Error:
public enum APIError: Error {
case IncorrectArguments(message: String)
case MissingArgument(message: String)
}
И обработка ошибок выглядит так:
do {
return try next.respond(to: request)
} catch let error as APIError {
throw Abort(.badRequest, reason: error.message)
}
Но я получаю ошибку компиляции здесь, говоря: Value of type 'APIError' has no member 'message'
.
Я знаю, что могу получить параметры путем сопоставления с образцом, но я не хочу обрабатывать каждый случай одинаково:
do {
return try next.respond(to: request)
} catch APIError.MissingArgument(let message) {
throw Abort(.badRequest, reason: message)
} catch APIError.IncorrectArguments(let message) {
throw Abort(.badRequest, reason: message)
}
В будущем может быть больше APIErrors в enum, и я не хочу обрабатывать каждый из них, используя отдельный блок catch, потому что все будут точно такими же.
Есть ли способ обработать эти ошибки каким-либо общим способом?