Java сцепленные исключения описание

Начиная с версии J2SE 1.4 ( (6 февраля 2002) в Java можно использовать новый механизм сцепления ислючений.
Это позволяет к одному исключению "прикрепить" другое, которое будет описывать причину появления 1-ого исключения.

То есть можно описывать уровни исключений- например пользователь ввёл в качестве параметра ноль, а программа на этот ноль разделелила - здесь важно что не просто было деление на ноль, а ещё и то, что этот ноль получен от пользователя (то есть в каком-то смысле имеет место, помимо ошибки деления на ноль, ошибка неправильного ввода)

Чтобы сцеплять исключения в класс Trowable добавили два конструктора:

 
// два конструктора для сцепления в момент создания
Trowable (Trowable  ПричинаИсключения); // сцепление без комментариев
 Trowable (String сообщение,Trowable  ПричинаИсключения); // сцепление с комментарием

Также были добавлены два спецаиальных метода, для ассоциации с причинным исключением уже после создания последнего и определения исключения с которым ассоциировано данное:

//  null в случае отсутсвия исключения-причины
Trowable getCause(); // узнаем тип "причины"
Trowable  initCause(Trowable  ПричинаИсключения);// сцепление (после создания)

ВАЖНО: причина исключения может быть задана только однажды! (во время создания или один раз после)
Лучше проводить сцепление при создании, так как метод initCause оставлен для устаревших классов, не имеющих двух рассмотренных ранее конструкторов.

Слишком длинные цепочки исключений (а они могут быть любой длины в том смысле, что у причины может быть своя причина) могут свидетельствовать о непродуманной архитектуре приложения.

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

Key Words for FKN + antitotal forum (CS VSU):