CodeGym /Cursos Java /Sintaxe do Java /Como funciona a captura múltipla

Como funciona a captura múltipla

Sintaxe do Java
Nível 9 , Lição 7
Disponível
Como funciona a captura múltipla - 1

"Mais algumas lições interessantes. Oh, como eu amo ensinar!"

"Gostaria de falar sobre como vários blocos catch funcionam. É muito simples: quando ocorrem exceções em um bloco try , a execução se move para o primeiro bloco catch ."

"Se um tipo indicado entre parênteses do bloco catch corresponde ao tipo da exceção lançada, a execução começa dentro desse bloco. Caso contrário, passamos para o próximo bloco catch , onde a mesma verificação é realizada."

"Se ficarmos sem blocos catch e a exceção não for capturada, ela será relançada e o método atual será encerrado de forma anormal."

"Entendo. O bloco catch que coincidir com o tipo de exceção será executado."

"Sim, certo. No entanto, na realidade é um pouco mais complicado. As classes podem herdar outras classes. Se uma classe Cow herda uma classe Animal, o objeto Cow pode ser referenciado não apenas por uma variável Cow, mas também por uma variável Animal. "

"E?"

"Como todas as exceções herdam Exception ou RuntimeException (que também herda Exception ), elas ainda podem ser capturadas usando 'catch ( Exception e)' ou ' catch (RuntimeException e) '."

"E?"

"Podemos tirar duas conclusões. Primeiro, você pode usar 'catch (Exception e)' para capturar qualquer exceção. Segundo, a ordem dos blocos catch é importante. "

"Aqui estão alguns exemplos:"

"O ArithmeticExceptionque ocorre depois de dividirmos por 0 será capturado no segundo bloco catch."

Código
try
{
    System.out.println("Before calling method1.");
    int a = 1 / 0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Division by zero. Exception has been caught.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}

"No exemplo abaixo, o ArithmeticExceptionserá capturado no primeiro bloco catch, pois todas as exceções herdam Exception, ou seja, Exceptionabrange todas as exceções. "

Código
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (Exception e)
{
    System.out.println("Any other errors. Exception has been caught.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}
catch (ArithmeticException e)
{
    System.out.println("Divided by zero. Exception has been caught.");
}

"No exemplo abaixo, ArithmeticExceptionnão será capturado. Ele será relançado para o método de chamada."

Código
try
{
    System.out.println("Before calling method1.");
    int a = 1/0;
    System.out.println("After calling method1. This will never be shown.");
}
catch (NullPointerException e)
{
    System.out.println("Null reference. Exception has been caught.");
}

"Isso esclareceu um pouco as coisas. Essas exceções não são o assunto mais fácil."

"Parece que sim. Na verdade, eles são uma das coisas mais simples em Java."

"Não sei se fico feliz ou triste com isso..."

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION