Escrevi esse código e não coloquei explicitamente a exceção na assinatura do método:
public class Fluxo {
public static void main(String[] args) {
System.out.println("Início do main");
try {
metodo1();
} catch(ArithmeticException | NullPointerException | MinhaExcecao ex) {
String msg = ex.getMessage();
System.out.println("Exception message: " + msg);
//ex.printStackTrace();
}
System.out.println("Fim do main");
}
private static void metodo1() {
System.out.println("Início do metodo1");
metodo2();
System.out.println("Fim do metodo1");
}
private static void metodo2() {
System.out.println("Início do metodo2");
throw new MinhaExcecao("deu muito errado");
//System.out.println("Fim do metodo2");
}
}
E meu código compila normalmente e não mostra o erro do compilador. Saída:
Início do main
Início do metodo1
Início do metodo2
Exception message: deu muito errado
Fim do main
O que estou fazendo de errado? Já que pela aula o código só deveria funcionar com o "throws MinhaExcecao"