Pode ser que eu esteja confundindo, mas não entendi como é possível acessar o método getMessage(), sendo que "ex" é apenas um ponteiro da classe ArithmeticException, sem apontar para um objeto dessa classe. Esse ponteiro não estaria apontando para null?
try {
metodo1();
} catch(ArithmeticException ex) {
String msg = ex.getMessage();
System.out.println("ArithmeticException " + msg);
}