Посты для тега : ‘исключений’

Обеспечение нейтральности к исключениям

Когда исключения были впервые добавлены к С++, многие разработчики были впечатлены возможностью генерировать их, перехватывать и обрабатывать. Фактически в то время существовало распространенное заблуждение, что обработка исключений состоит из стратегического размещения операторов try по всему коду и добавления throw при необходимости.

Читать далее »

Базовая структура нейтрального к исключениям кода

Общая идея, лежащая в основе написания нейтрального к исключениям кода, подобна идее, лежащей в основе кода фиксации/отката (commit/rollback). При этом пишется такой код, который гарантирует, что если его выполнение не завершено, то вся операция отменяется без каких-либо последствий для состояния системы. Изменения в состоянии фиксируются только в том случае, когда код достигает конечной точки выполнения.

Читать далее »

Механизм обработки исключений в C#

Где должны обрабатываться исключения? Ответ можно найти, применив вариант шаблона Expert (Эксперт), который устанавливает, что работа должна выполняться сущностью, являющейся экспертом в данной области. Это — окольный путь уведомить, что исключение должно перехватываться в точке, где его действительно можно обработать с уровнем знаний, достаточным для того, чтобы справиться с исключительной ситуацией наилучшим образом.

Читать далее »

Преобразования типов в C#

Необходимость в преобразовании экземпляров одного типа в другой возникает очень часто. В некоторых случаях компилятор выполняет такое преобразование неявно — когда значение одного типа присваивается переменной другого типа, и при этом не теряется точность и значение.

Читать далее »

Повторная генерация и трансляция исключений

Внутри определенного фрейма стека может понадобиться перехватить все исключения или же определенное их подмножество, выполнить некоторую очистку и затем заново сгенерировать исключение, чтобы позволить ему дальше распространяться по стеку. Для реализации сказанного используется оператор throw без параметров:

Читать далее »

Создание пользовательских классов исключений

У System.Exception имеются три общедоступных конструктора и один защищенный. Первый — это конструктор по умолчанию, который на самом деле мало что делает. Второй — конструктор, принимающий ссылку на строковый объект. Строка представляет собой общее, определяемое программистом сообщение, которое можно рассматривать как более дружественное к пользователю описание исключения. Третий конструктор также принимает строку сообщения, как и […]

Читать далее »
 
Rambler's Top100