LINUX.ORG.RU

История изменений

Исправление Legioner, (текущая версия) :

Обычно дальше работать уже нельзя, так как по сломанной ссылке лежит что-то важно или свалились во время какого-то сложного процесса и в таком месте где восстановиться уже нельзя.

Зависит от приложения. Если это какой-нибудь научный расчёт — согласен. Если это система обработки более-менее независимых друг от друга запросов, чаще всего просто возвращается ответ со статусом «Ошибка сервера». При этом само приложение продолжает работать и обрабатывать другие запросы.

Чтобы это работало надо изначально продумывать все места где может упасть исключение и понимать как восстанавливаться после поломки, в 99% этого не сделано потому что об этом либо не думали, либо не ожидали, либо обработка и восстановление слишком сложное и дорогое по реализации.

Как раз таки исключения обычно делают достаточно безопасной работу после ошибки. Это в каком-нибудь C можно бояться — а проверят ли код возврата наверху? А может лучше молча сделать abort(), чем рисковать тем, что не проверят. В Java нужны специальные усилия, чтобы погасить исключение. Обычно оно нормально улетает наверх, где есть код, который может его поймать и предпринять какие то действия. Всякие файловые дескрипторы будут нормально закрыты, память будет нормально освобождена, транзакции будут нормально откачены. Да, может остаться какой-нибудь временный файл неудалённым, но это не очень страшно.

Исходная версия Legioner, :

Обычно дальше работать уже нельзя, так как по сломанной ссылке лежит что-то важно или свалились во время какого-то сложного процесса и в таком месте где восстановиться уже нельзя.

Зависит от приложения. Если это какой-нибудь научный расчёт — согласен. Если это система обработки более-менее независимых друг от друга запросов, чаще всего просто возвращается ответ со статусом «Ошибка сервера». При этом само приложение продолжает работать и обрабатывать другие запросы.

Чтобы это работало надо изначально продумывать все места где может упасть исключение и понимать как восстанавливаться после поломки, в 99% этого не сделано потому что об этом либо не думали, либо не ожидали, либо обработка и восстановление слишком сложное и дорогое по реализации.

Как раз таки исключения обычно делают достаточно безопасной работу после ошибки. Это в каком-нибудь C можно бояться — а проверят ли код возврата наверху? А может лучше молча сделать abort(), чем рисковать тем, что не проверят. В Java нужны специальные усилия, чтобы погасить исключение. Обычно оно нормально улетает наверх, где есть код, который может его поймать и предпринять какие то действия.