2014-08-27 8 views
41

Podczas czytania mojego kodu zauważyłem mój IDE został wymieniając ostrzeżenia z następującym komunikatem:„Złap oddział jest identyczna” jednak wymaga jeszcze mi go złapać

Raporty identycznych sekcji połowów w blokach try pod JDK 7 Dostępna jest funkcja quickfix, która pozwala zwinąć sekcje do sekcji z wieloma połowami.

A także określa, że ​​to ostrzeżenie jest generowany dla JDK 7+

Blok try jest w następujący sposób:

try { 
    FileInputStream e = new FileInputStream("outings.ser"); 
    ObjectInputStream inputStream = new ObjectInputStream(e); 
    return (ArrayList)inputStream.readObject(); 
} catch (FileNotFoundException var3) { 
    var3.printStackTrace(); 
} catch (ClassNotFoundException var5) { 
    var5.printStackTrace(); 
} catch (IOException ex){ 
    ex.printStackTrace(); 
} 

Jednak podczas usuwania (bloki catch że to rzucił szczególności ostrzeżenia):

catch (ClassNotFoundException var5) { 
    var5.printStackTrace(); 
} catch (IOException ex){ 
    ex.printStackTrace(); 
} 

bym nadal pojawiają się błędy w:

ObjectInputStream inputStream = new ObjectInputStream(e); 
return (ArrayList)inputStream.readObject(); 

Czy brakuje mi czegoś oczywistego, czego dotychczas nie doszedłem?

Odpowiedz

93

Tak, ponieważ widzę, że samo ostrzeżenie w IntelliJ (i myślę, że używasz IntelliJ też), to dlaczego nie pozwolić Alt + Wprowadź (lub Option + Return jeśli was raczej) pokażę, co to znaczy?

można zwinąć gałęzi wyjątek, jeśli są one identyczne, a ze składnią multi-catch, będziesz skończyć z jednej instrukcji catch, która działa tak samo jak swoje trzy:

try { 
    FileInputStream e = new FileInputStream("outings.ser"); 
    ObjectInputStream inputStream = new ObjectInputStream(e); 
    return (ArrayList)inputStream.readObject(); 
} catch (ClassNotFoundException | IOException var3) { 
    var3.printStackTrace(); 
} 
return null; 
+2

Ważne jest, aby należy zauważyć, że typy w przypadku połowu wielogatkowego muszą być rozłączne. +1 za właściwe użycie oświadczenia dotyczącego wielu połowów. –