Przykład

public static class Loader {
public void load() throws UnsupportedOperationException, ClassNotFoundException{
//inne operacje...
}
}


public static void main(String[] args) {
Loader loader = new Loader();
try {
loader.load();
} catch (Exception e) {
e.printStackTrace();
}
}


Rozwiązanie
W powyższej metodzie main ostatnia klauzula przechwytuje wyjątek ogólny java.lang.Exception. Zamiast
tego utwórz dedykowaną klauzulę catch dla każdego zadeklarowanego wyjątku zgłaszanego w klauzuli try.
Uwaga: w pewnych sytuacjach lepiej jest zastosować ogólną klauzulę catch, aby zapewnić poprawne zakończenie działania. Jednak ogólnie
rzecz biorąc, skonkretyzowane klauzule catch zapewniają większą przejrzystość i lepszą kontrolę.


public static class Loader {
public void load() throws UnsupportedOperationException, ClassNotFoundException{
//inne operacje...
}
}


public static void main(String[] args) {
Loader loader = new Loader();
try {
loader.load();
} catch ( UnsupportedOperationException e1 ) {
System.out.println( "metoda load nie jest zaimplementowana" ); //$NON-NLS-1$
} catch ( ClassNotFoundException e2 ) {
System.out.println( "Brak klasy " + e2.getMessage() ); //$NON-NLS-1$
}
}