9.3 Muitas e muitas Exception

As RuntimeExceptions

Claro, além de um for tentando acessar mais índices do que deveria e a tentativa de executarmos ações em referências nulas, existem diversas outras situações de risco em que a JVM lançará uma exception. Cada situação dessa tem uma forma (um tipo) forte de ser representada; conhecê-las pode ser muito importante para nosso diaa dia.

Veremos diversas dessas situações e diferentes tipos de Exception no decorrer deste capítulo e dos demais do livro, mas desde já é interessante entendermos que todos estes casos que vimos até agora poderiam facilmente ser evitados de forma simples pelo programador.

Conhecemos estes tipos de Exceptions como unchecked, pois o compilador não verifica (checa) se as estamos tratando. Em outras palavras, nosso código compilará com ou sem os try/catchs declarados.

As unchecked exceptions não herdam diretamente da classe Exception, mas sim de sua filha RuntimeException. Os casos mais comuns são:

Checked Exceptions

Diferente disso, quando estamos fazendo a leitura de um arquivo ou qualquer outra operação de risco que não pode ser facilmente evitada (o arquivo pode não existir, por exemplo) o compilador nos obriga a tratar esse código! Esse é um outro tipo de exception da linguagem, conhecida como checked exception.

Para testar, vamos escrever o seguinte código que realiza a leitura de um

arquivo que não existe. Não se preocupe com o código em si, entenderemos a API de IO (leitura e escrita) mais à frente. O ponto aqui é perceber que esse código não compila:

new java.io.fileinputStream(“arquivo.txt”);

O erro será “Unhandled exception type FileNotFoundException

. Note que o compilador checou que ela não está sendo tratada. Para que o código compile poderíamos fazer algo como:

try {

new java.io.fileinputStream(“arquivo.txt”);

} catch (FileNotFoundException el) { System.out.println(“Nao consegui abrir o arquivo”);

}


⬅️ Capítulo Anterior | Próximo Capítulo ➡️