Введение

Цепочка исключений, или оборачивание исключений, — это объектно-ориентированная техника программирования для обработки исключений путем повторного выброса перехваченного исключения после помещения его внутрь нового исключения. Исходное исключение сохраняется как свойство (например, «причина») нового исключения. Идея заключается в том, что метод должен выбрасывать исключения, определенные на том же уровне абстракции, что и сам метод, но без потери информации с нижних уровней. Например, метод для воспроизведения файла фильма может обрабатывать исключения при чтении файла, повторно выбрасывая их внутри исключения, связанного с воспроизведением фильма. Пользовательскому интерфейсу не нужно знать, произошла ли ошибка при чтении фрагмента байтов или при вызове EOF. Ему требуется только сообщение об исключении, извлеченное из причины. Уровень пользовательского интерфейса будет иметь свой собственный набор исключений. Тот, кто заинтересован в причине, может увидеть трассировку стека во время отладки или в соответствующем журнале. Выброс исключений подходящего типа особенно важен для проверяемых исключений в языке программирования Java, и начиная с версии 1.4 почти все исключения поддерживают цепочки. В средах выполнения, таких как Java или .NET, существуют инструменты, которые подключаются к среде выполнения и каждый раз при возникновении интересующего исключения записывают отладочную информацию, которая была в памяти в момент выброса исключения (значения стека и кучи). Эти инструменты называются перехватом исключений и предоставляют информацию о «первопричине» исключений в программах Java, работающих в производственной, тестовой или разрабатываемой среде.