Od dłuższego czasu wyszukuję to sformułowanie (poziom wyższy i niższy, lower and higher-level methods) po polsku i po angielsku, ale nigdzie nie widzę jednoznacznego wyjaśnienia a la definicja, co dokładnie oznacza. (Co najwyżej wyskakują mi radosne opowieści o tym, że niżej to bliżej hardware'u.) Dlatego chciałabym skonfrontować swoje zrozumienie na podstawie kontekstu. "Klauzula throws sprowadza się do “zepchnięcia” odpowiedzialności obsłużenia wyjątku o poziom niżej, do metody wywołującej". Patrzę na przykładowy kod (poniżej) i rozumiem to tak, że OK - w jednym miejscu jest definicja naszej metody, gdzie wyjątku jeszcze nie ruszamy, tylko rzucamy, a w drugim jest miejsce, w którym zostaje ona wywołana w metodzie main (i tam obsłużona). Tylko dlaczego mówimy w tym kontekście, że metoda main znajduje się "o poziom niżej"? Czy idę w dobrą stronę rozumując, że jeśli ona zawiera wywołanie "naszej" metody, to może chodzi po prostu o to, że jest "na zewnątrz" względem owego wywołania, a im bardziej "do środka", tym wyższy poziom abstrakcji, więc higher level?
public class CheckedExceptions {
public static void main(String[] args) {
CheckedExceptions instance = new CheckedExceptions();
try {
instance.methodWithCheckedException();
}
catch (IOException e) {
e.printStackTrace();
}
}
private void methodWithCheckedException() throws IOException {
throw new IOException();
}
}