Исключительно исключительные исключения
Интересно узнать чужой опыт:
как вы обрабатываете ситуации, где исключение не должно возникнуть, но формально может и непонятно, что с этим делать?
Простые примеры:
п1. метод clone() наследника Object implements Cloneable, банально вызывающий super.clone() и, к примеру, byte[] field's clone()
Object и byte[] clone() ну никак не должны выкинуть CloneNotSupportedException, но обработать его надо.
Варианты:
1. просто проглотить его и вернуть null, чтобы наверху разбирались (old MSDOS style)
2. отдать исключение наверх, пусть весь код пестрит его перехватами
3. re-throw наследника RuntimeException (мечта нелюбителей checked exception) и голова не боли
4. re-throw наследника Error (IMHO ужас)
5. пункты 1 по 5 + лог внутри метода
п2. Успешно отработавший с InputStream метод в конце вызвавший close() и получивший IOException.
Событие чуть более вероятное. Все действия метода выполнены. Что делать?
как вы обрабатываете ситуации, где исключение не должно возникнуть, но формально может и непонятно, что с этим делать?
Простые примеры:
п1. метод clone() наследника Object implements Cloneable, банально вызывающий super.clone() и, к примеру, byte[] field's clone()
Object и byte[] clone() ну никак не должны выкинуть CloneNotSupportedException, но обработать его надо.
Варианты:
1. просто проглотить его и вернуть null, чтобы наверху разбирались (old MSDOS style)
2. отдать исключение наверх, пусть весь код пестрит его перехватами
3. re-throw наследника RuntimeException (мечта нелюбителей checked exception) и голова не боли
4. re-throw наследника Error (IMHO ужас)
5. пункты 1 по 5 + лог внутри метода
п2. Успешно отработавший с InputStream метод в конце вызвавший close() и получивший IOException.
Событие чуть более вероятное. Все действия метода выполнены. Что делать?
