Чи можна перехоплювати загальний виняток?

Перехоплення надто широкого винятку по суті перешкоджає меті типізованих винятків мови та може стати особливо небезпечним, якщо програма розростається та починає створювати нові типи винятків.

Моя основна проблема з переловом загального винятку полягає в тому це демонструє, що ви не знаєте очікуваної поведінки або шляхів збою вашого власного коду.

Це, однак, є вважається поганою практикою. Перехоплення винятків саме по собі не дозволяє вам належним чином обробити виниклі винятки, що є однією з основних причин, чому існує оброблення винятків.

Це гарна практика, щоб кинути блок улову. Це сумнівна практика робити це, ігноруючи вихідний виняток. «Я перехоплюю ServiceException і викидаю той самий виняток». Ви створюєте той самий тип винятку, а не той самий виняток.

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