Если вы разрабатываете и клиент, и сервер, то вы, вероятно, захотите определить какой-то протокол, который может быть интересным. Вы можете думать о своем веб-сервере как о сервере rpc, который возвращает данные в определенном формате для заданных запросов.
Например, при использовании кодов состояния HTTP в случае успешного ответа могут быть возвращены следующие данные:
{
status: 200,
message: "OK",
data: {
name: John Doe,
age: 31
},
error: null
}
Запрос, который приводит к ошибке:
{
status: 400,
message: "Bad Request",
data: null,
error: "Database request timed out"
}
У вас в значительной степени будет блок try catch, перехватывающий любые ожидаемые исключения, которые затем могут быть преобразованы в соответствующий ответ JSON с описанием проблемы, которая затем может быть обработана клиентом.
Если в запросе просто есть ошибка еще до того, как он достигнет сервлета, API, используемый для создания запроса, вероятно, предоставляет какой-либо обратный вызов onError, который затем можно использовать для уведомления клиента об ошибке.