Las opiniones varían. Mis propias pautas básicas son:
- detectar excepciones si su código puede continuar con éxito cuando se lanzan (y si no puede cambiar el código subyacente para no lanzarlos en primer lugar, existen numerosas razones por las cuales este podría ser el caso);
- detecte excepciones que son de naturaleza catastrófica para convertirlas de marcadas en no marcadas para que las capas externas de su código no tengan que manejarlas;
- detectar excepciones para registrarlos y continuar;
- lanzar una excepción cuando su código no puede proporcionar el resultado esperado o realizar su función esperada y ya no existe un mecanismo más simple para indicar esto al código de invocación (como un estado devuelto que puede indicar una falla);
- use excepciones entre los componentes que está diseñando para permitir 2 rutas de retorno (ruta feliz y ruta infeliz; esto puede exagerarse, así que use con moderación);
- use try / catch / finally para evitar pérdidas de recursos (en la parte final de la construcción, especialmente cuando se trata de bases de datos y E / S de archivos).
Al igual que cualquier otro objetivo de programación, hay otras formas de hacer cualquiera de los anteriores, y otras circunstancias en las que podría pensar que se puede usar try / catch. La codificación es en parte arte y en parte ciencia, por lo que hay muchas formas de lograr los mismos objetivos.