Dlaczego tak
Pierwsze wywołanie zwraca 10 / 2 = 5 i wartość zostaje wypisana. W drugim b = 0, więc instrukcja throw zgłasza wyjątek, metoda dziel kończy się bez zwracania wartości, a sterowanie przeskakuje od razu do bloku catch, który wypisuje E. Instrukcja wypisująca X nie wykona się, bo po zgłoszeniu wyjątku reszta bloku try jest pomijana — stąd odpowiedź 5XE jest błędna.