finally всегда выполняется после запуска try и catch (если возникает исключение).Таким образом, в этом случае нечего обрабатывать ваше исключение, выброшенное из блока finally.Вы можете решить эту проблему, добавив:
public static void main(String [] argv) throws Exception {
try {
m();
} catch( MyExc3 k ) {
System.out.print(1);
} catch( Exception u ) {
} finally {
throw( new Exception() );
}
}
или выполнив это:
public static void main(String [] argv) {
try {
m();
} catch( MyExc3 k ) {
System.out.print(1);
} catch( Exception u ) {
} finally {
try {
throw( new Exception() );
} catch (Exception e) {
e.printStackTrace();
}
}
}
Но, тем не менее, вы получите ошибку компиляции.Это потому, что вы перехватываете исключение MyExc3 в main, где оно не генерируется в main ().Вы бросили исключение MyExc3 в m ().Но вы поймали исключение и в m ().Таким образом, исключение MyExc3 не пришло в main ().Для этого, чтобы сгенерировать исключение MyExc3, нужно добавить следующее:
static void m() throws MyExc3 {