Lo siento. Estoy seguro de que esto ha sido contestada por aquí antes. Sin embargo, no puedo encontrarlo.
En esencia, tengo un bloque try / catch en el que parecen llegar un aviso o error, no importa lo que hago. catch(IOException e)
da como resultado una advertencia "demasiado amplia". catch (FileNotFoundException e)
como resultado errores de código que requiere una captura IOException. catch (FileNotFoundException | IOException e)
da como resultado un "tipos en múltiples capturas deben ser disjuntos" error. Por último, poner dos bloques catch (uno para cada excepción) se traduce en una "rama 'captura' idéntica a 'FileNotFoundException'" advertencia.
No quiero a un sistema de alerta de edición de IntelliJ ya que es útil.
¿Cómo puedo hacer que el bloque try / catch a continuación funcionan sin advertencias o errores?
@Override
public void readFile(File inFile) {
try {
FileReader fr = new FileReader(inFile);
BufferedReader br = new BufferedReader(fr);
// get the line with the sizes of the puzzle on it
String sizes = br.readLine();
// find the height of the puzzle
int height = Character.getNumericValue(sizes.charAt(0));
// create a puzzleArr with a height
this.puzzleArr = new char[height][];
// create the char[] array of the puzzle itself
int ct = 0;
String puzzleLine;
// add the puzzle to puzzleArr
while (ct < this.puzzleArr.length) {
puzzleLine = br.readLine().replaceAll("[^a-z]", "");
this.puzzleArr[ct++] = puzzleLine.toCharArray();
}
// create the LinkedList<char[]> of words to find in the puzzle
String line = br.readLine();
while (line != null) {
line = line.toLowerCase().replaceAll("[^a-z]", "");
this.wordList.add(line.toCharArray());
line = br.readLine();
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
Puede encontrar la inspección correspondiente a Settings > Editor > Inspections > Java > Error Handling > Overly broad 'catch' block
. Me gustaría señalar que esta inspección no estaba activado por defecto para mí.
Hay un par de maneras para "fijar" la advertencia.
Utilice Multi-Catch
@Override
public void readFile(File file) {
try {
...
} catch (FileNotFoundException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
}
Modificar inspección
Esta es probablemente la opción preferida, especialmente si se quiere evitar la desactivación de la inspección por completo. A partir de la descripción de la inspección:
Informes coger bloques que tienen parámetros que son más genérico que las excepciones lanzadas por el correspondiente intento bloque.
Utilice la primera casilla de abajo para que esa inspección sólo se advierten en las excepciones más genéricos.
Utilice la segunda casilla de abajo para ignorar las excepciones que se ocultan otras excepciones, pero que puede ser lanzado y por lo tanto son técnicamente no es excesivamente amplia.
El último párrafo es lo que nos interesa.