1
resposta

[Projeto] 08 Capturando uma exception - Sobre a execução do código anterior, qual será a saída?

Ao executar o código da questão no VS Code mostrou a mensagem de erro.

public class OlaMundo {
public static void main(String[] args) {
System.out.println("Ola, Mundo!");
try {
Pessoa p = null;
System.out.println(p.getNome());
} catch (Exception e) {
System.out.println("Exception");
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("Array Index Out Of Bounds Exception");
} catch (NullPointerException e) {
System.out.println("Null Pointer Exception");
}

}

}

Primeiro, uma variável p do tipo Pessoa é declarada e inicializada com o valor null. Isso significa que p não se refere a nenhum objeto Pessoa na memória.

Em seguida, o código tenta acessar o método getNome() do objeto p. No entanto, como p é null, não há objeto para chamar o método. Isso causa um erro de NullPointerException, que é uma exceção em Java que ocorre quando você tenta acessar um membro (método ou atributo) de um objeto que é null.

08 Capturando uma exception

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta

Olá Fábio! Como vai?

A dúvida que você levantou é bem comum quando estamos lidando com exceções em Java. No código que você apresentou, há um problema de compilação devido à ordem dos blocos catch.

O bloco catch que captura Exception deve ser colocado após os blocos mais específicos, como NullPointerException e ArrayIndexOutOfBoundsException. Isso ocorre porque Exception é uma classe mais genérica e, quando está primeiro, captura todas as exceções, tornando os blocos mais específicos inacessíveis.

Além disso, o erro "Pessoa cannot be resolved to a type" indica que a classe Pessoa não foi definida ou importada corretamente no seu projeto.

Para corrigir o problema, você deve:

  1. Definir ou importar a classe Pessoa.
  2. Reordenar os blocos catch para que os mais específicos venham antes do mais genérico.

O código corrigido ficaria assim:

public class OlaMundo {
    public static void main(String[] args) {
        System.out.println("Ola, Mundo!");
        try {
            Pessoa p = null;
            System.out.println(p.getNome());
        } catch (NullPointerException e) {
            System.out.println("Null Pointer Exception");
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Array Index Out Of Bounds Exception");
        } catch (Exception e) {
            System.out.println("Exception");
        }
    }
}

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.