Исключения не работают таким образом.
Блоки try{} catch {}
ничего не знают, так как это не тот объект, который выдает исключение, он просто о том, как обрабатывать исключение, выданное кодом внутри блока try
.
В вашем случае ArithmeticException выдается в время выполнения виртуальной машиной, когда знаменатель равен 0, после чего стековая трасса заполняется, как в случае любого исключения.
ArithmeticException бросается при возникновении исключительного арифметического условия c. Например, целое число «делить на ноль» выбрасывает экземпляр этого класса. Объекты ArithmeticException могут создаваться виртуальной машиной, как если бы подавление было отключено и / или трассировка стека не была доступна для записи.