Перехоплення надто широкого винятку по суті перешкоджає меті типізованих винятків мови та може стати особливо небезпечним, якщо програма розростається та починає створювати нові типи винятків.
Моя основна проблема з переловом загального винятку полягає в тому це демонструє, що ви не знаєте очікуваної поведінки або шляхів збою вашого власного коду.
Це, однак, є вважається поганою практикою. Перехоплення винятків саме по собі не дозволяє вам належним чином обробити виниклі винятки, що є однією з основних причин, чому існує оброблення винятків.
Це гарна практика, щоб кинути блок улову. Це сумнівна практика робити це, ігноруючи вихідний виняток. «Я перехоплюю ServiceException і викидаю той самий виняток». Ви створюєте той самий тип винятку, а не той самий виняток.
Причина цього в тому, що тип винятку передає інформацію абоненту про те, що пішло не так. Абонент може відновитися після одних помилок, але не від інших. Одна з теорій полягає в тому, що ви повинні створити найбільш конкретний виняток, який все ще має сенс для абонента.