Opa, e aí Otávio, tranquilo? Não sei se entendi muito bem, dá uma olhada:
public class Fluxo {
public static void main(String[] args) {
System.out.println("Ini do main");
try { metodo1();
} catch (NullPointerException | ArithmeticException | MinhaExcecao ex){
System.out.println("Exception " + ex.getMessage());
ex.printStackTrace();
}
System.out.println("Fim do main");
}
private static void metodo1() {
System.out.println("Ini do metodo1");
metodo2();
System.out.println("Fim do metodo1");
}
private static void metodo2() {
System.out.println("Ini do metodo2");
Conta c = new Conta();
throw new MinhaExcecao("deu muito errado"); // sai da execução, joga a exceção
//System.out.println("Fim do metodo2");
}
}
Será executado o main, o qual tentará executar o método 1. Este, por sua vez, chama o método 2.
No método 2, na linha : throw new MinhaExcecao("deu muito errado"); eu posso apagar ela, que mesmo assim o código compila sem problemas.
Minha dúvida é na linha: catch (NullPointerException | ArithmeticException | MinhaExcecao ex){
A referência ex veio de onde se eu não instanciei nada? Ou o catch é tipo um método o qual eu passo parâmetros sendo, neste caso, esse parâmetro do tipo Null.. Arith.. ou MinhaExcecao que eu decidi chamar de ex?
Tipo como se fosse em um construtor (int senha), mas aqui: catch (NillPointerrException ex).
Resumindo tudo isso pra ficar mais fácil pra entender a minha pergunta kk, o que está dentro do parenteses do catch são os parâmetros que eu quero passar pra ele capturar, como se fosse qualquer outro método qualquer?