No es necesario que intente, atrape y vuelva a plantear excepciones a menos que tenga alguna razón particular para detectarlas en primer lugar. De lo contrario, van a automáticamente burbujear desde las funciones de nivel inferior que los arrojan a la función de nivel más alto en su código. Básicamente, puedes pensar en ellos como si estuviesen "recuperando" todo el camino hacia arriba, aunque esto técnicamente no es lo que está sucediendo.
De hecho, la mayoría de las veces que ve un bloque try
/catch
escrito, es incorrecto. No debe detectar excepciones a menos que realmente pueda manejarlas. No tiene sentido (y de hecho se considera que es una mala práctica) detectar excepciones solo para volver a lanzarlas. No ajuste todo su código dentro de los bloques try
.
Tenga en cuenta que por "manejarlos", que significa que su código en el bloque catch
tomará alguna acción específica basada en la excepción particular que fue arrojado que los intentos de correcta la condición excepcional.
Por ejemplo, para FileNotFoundException
, puede informar al usuario que no se pudo encontrar el archivo y pedirle que elija otro.
Consulte my answer here para obtener más información y una explicación detallada de las "mejores prácticas para el manejo de excepciones".
+1: conciso y preciso. Agregaría una razón más que no es exactamente "volver a lanzar": ajuste una excepción dentro de una excepción diferente (pero siempre mantenga la excepción original en InnerException, de lo contrario, perderá información sobre la excepción original que podría ayudar a la eliminación de errores). El envoltorio podría brindar un contexto adicional que no puede ser reinventado, p. "Error al guardar un nuevo pedido para el Cliente 843, vea InnerException para más detalles". –