El hecho es que una herramienta de análisis estático básicamente escanea su código por violaciones de (lo que el autor de la herramienta considera) "mejores prácticas". En este caso, generalmente se considera una "mejor práctica" tener jerarquías de excepciones muy superficiales.
La razón es que básicamente hay dos oportunidades en las que detectará una excepción. El primero es si desea detectar la excepción porque sabe cómo manejarlo. Por ejemplo:
try
{
return fetchDataFromFile();
}
catch(FileNotFoundException)
{
return defaultData;
}
En este caso, usted cogió el FileNotFoundException
porque quiere volver "datos por defecto" cuando no se encuentra el archivo. En esta situación, normalmente detecta una clase de excepción específica - porque ese es el único tipo de excepción que sabe cómo manejar (por ejemplo, si fetchDataFromFile
arroja alguna otra excepción, no desea que devuelva datos predeterminados.
la otra vez que va a coger excepciones está en la raíz misma de su hilo,
try
{
doStuff();
catch(Exception e)
{
logException(e);
notifyUser(e);
}
en este caso, usted coge la clase de excepción de la raíz, ya que desea específicamente todas las excepciones para que pueda conectarse ellos, o notificar al usuario.
Hay muy pocas situaciones en las que necesite hacer algo más.
Ahora, recuerde que esta es una herramienta de análisis estático. Su trabajo es simplemente señalarle problemas "potenciales". Si cree que su situación es de alguna manera diferente, entonces la idea es documentar por qué cree que es diferente y específicamente desactivar esa advertencia para esa sección de código (o esa clase o lo que sea).
Me uno a tu confusión, esta sugerencia no parece tener mucho sentido. –
+1 para "WTF?" ... – SimonJ
¿cuál es el analizador de código fuente? ¿Está generalmente disponible para otros? – msw