Под нейтральным к исключениям кодом понимается такой код, в котором не предумотрена явная обработка возможных исключений (try/catch) и который при этом в состояние справиться с возникшими исключениями.
В основе написания нейтрального к исключениям кода лежит идея, похожая на идею транзаций (commit/rollback) - фиксация изменений или откат всех действий и восстановление первоначального состояния объектов в случае возникновения исключения.
Реализация подобной схемы дает несколько преимуществ:
1) Улучшение читабельности кода за счет отсутствия конструкций try/catch/finnally.
2) Код гарантированно не генерирует исключения после изменения состояния обьектов, что вполне может произойти в блоках catch или finally.
3) Если возникает исключение до изменения состояния обьектов - все изменения откатываются и обьекты остаются в первоначальном состоянии.
Минусы подобной схемы:
1) Снижение эффективностикода во время выполнения за счет большего количества потребляемых системных ресурсов.
Расмотрим пример реализации подобного кода:
В основе написания нейтрального к исключениям кода лежит идея, похожая на идею транзаций (commit/rollback) - фиксация изменений или откат всех действий и восстановление первоначального состояния объектов в случае возникновения исключения.
Реализация подобной схемы дает несколько преимуществ:
1) Улучшение читабельности кода за счет отсутствия конструкций try/catch/finnally.
2) Код гарантированно не генерирует исключения после изменения состояния обьектов, что вполне может произойти в блоках catch или finally.
3) Если возникает исключение до изменения состояния обьектов - все изменения откатываются и обьекты остаются в первоначальном состоянии.
Минусы подобной схемы:
1) Снижение эффективностикода во время выполнения за счет большего количества потребляемых системных ресурсов.
Расмотрим пример реализации подобного кода: