2014-02-06 1 views
0

Я пишу клиентскую библиотеку для ряда наших API, которые будут использоваться сторонними библиотеками.Исключения при запуске и обертке при создании библиотеки?

В этом базовом клиенте http мы используем только команды RuntimeExceptions. Я не хочу, чтобы эти исключения пузырились, но вместо этого оберните их в наш собственный ClientException.

Однако все, что я читаю, похоже, говорит о том, что исключение извлечения времени выполнения - это действительно плохая практика?

Является ли это исключением из правила при написании библиотек, которые будут использоваться третьими лицами?

+0

Это буквально «RuntimeException» или определенный подтип? Если последнее, тогда нет такой * лучшей практики *, которая бы приказала вам не поймать ее. Например, Spring и Hibernate бросают только непроверенные исключения и рекламируют это как * функцию * и лучше всего следовать. –

+0

Да, это подтип, просто исключение. –

+0

«Все, что вы читаете» не всегда ориентировано на вашу конкретную ситуацию (и будьте осторожны, потому что во многих случаях, особенно в Интернете, где каждый может притворяться, что их мнение является достоверным справочным источником, «все, что вы читаете», состоит исключительно из нескольких заявления, основанные на том же корневом недоразумении/дезинформации); сделайте то, что имеет наибольший смысл для вашего сценария, и ведет к самому чистому и самому простому коду (и простому API). Если вы чувствуете, что делаете то, что требует дальнейших объяснений, четко документируйте его. –

ответ

2

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

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

try { ... } 
catch (RuntimeException e) { ... do some handling and move on ... } 

, потому что будет пресекать любые NullPointerException с, IllegalArgumentException сек и т.д. от разрыва потока выполнения. Эти исключения являются слишком общими для автоматического восстановления (могут появляться в слишком многих местах, по разным причинам), и обычно указывают ошибки программирования, которые сложнее определить, если код не сломается на них.