Вы обрабатываете исключение ДВУМЯ способами. Во-первых, если вы расширяете прямой вызов класса Exception, как это было сделано при объявлении метода
method_name(int n) throws Exception
Это означает, что независимо от того, какой тип исключения встречается в методе, он всегда сможет его перехватить, например, если внутри метода возникнет исключение Arithmetic Exception, NullPointerException или ArrayIndexOutOfBoundsException, которое сможет выполнить указанное выше объявление. поймать каждого из них. Из-за этого нет реальной цели размещения блока try catch внутри этого метода, поскольку даже RunTimeException является частью иерархии класса исключений.
Поэтому, если я правильно понял ваш вопрос, программа запустится, а затем поймает исключение из блока catch, в случае неудачи оно перехватит его из объявления метода.
Надеюсь, что он отвечает на ваш запрос.