Здравствуйте, Zhendos, Вы писали:
Z>Для этого не нужно взламывать сервер, конечно пользователю показываются Z>ошибки которые он может исправить: ввести логин и пароль, загрузить другой файл, Z>предоставить правильную ссылку и так далее.
Такие ошибки вообще не должны кидать исключения ни на каком этапе. Неправильный логин — селект возвращает null (или optional для эстетов), код простым if-ов разбирается с ситуацией. То же с паролем и тд. Конечно иногда API нужного просто нет, например в жаве нельзя распарсить строку в число без обработки исключения, но это уже недостаток API. Ряд API было бы неплохо дублировать для двух юз-кейсов. К примеру я в своих программах при работе с базой различаю методы find, которые всегда возвращают один результат, а если результатов 0 или 2+, то кидают исключение и методы query, которые возвращаю Optional. В итоге в коде я либо использую метод find без каких-то дополнительных проверок (к примеру если в URL-е пришёл ID, зачем его проверять, URL это не поддерживаемый элемент интерфейса и ввод кривого URL-а просто приведёт к выбросу этого исключения и возврату его в итоге как 404 страницы), либо метод query, если это уже нормальная форма поиска, к примеру.
Z>А какая разница? Так или иначе весь серверный код взаимодействует пользователю, Z>из-за того что условный Photoshop открывается с помощью загрузки сайта, а не через запуск exe что-то измениться? Z>Мне кажется как раз наоборот, если раньше при ошибке о недостатка памяти можно было просто упасть, Z>теперь лучше сообщить об этом пользователю, ведь это реальные деньги: "памяти не хватает для обратки операции XYZ, Z>оплатите переходите на тариф "ПРО" за +100$ и объем доступной памяти будет увеличен вдвое".
Разница в том, что пользователь в случае с серверным софтом не может ничего исправить. Ну про тарифы про не знаю, с таким не сталкивался. В любом случае это очень точечные обработки ошибок, ради которых по всему коду их обрабатывать — избыточно.