Índice:
Vídeo: Tratamento de erros e exceções no JAVA 2024
Os erros em aplicativos Java podem ocorrer em vários momentos. No entanto, você pode classificar em geral quando um erro ocorrerá em duas categorias, no tempo de compilação e no tempo de execução, conforme descrito nas seções a seguir.
Erros de tempo de compilação
O compilador converte seu código de aplicativo em código de byte Java. Durante esse processo, é preciso o código legível para humanos que você escreve e o converte em algo que o Java Runtime Environment (JRE) entende.
Para executar este processo, o compilador deve analisar o código, o que significa que ele lê o código de forma que inequivocamente determina precisamente o que deseja que o aplicativo faça, quando você quer fazê-lo, e como você deseja que a tarefa seja realizada. Se você infringir as regras para escrever código sem ambiguidade, o compilador exibirá uma mensagem de erro. Esta mensagem é realmente um tipo de exceção.
Analisar significa ler a entrada que você fornece, como código em formato legível por humanos, e transformá-lo em outra coisa, como código de byte Java. Um aplicativo também pode analisar a entrada do usuário. Por exemplo, um usuário pode digitar uma string que o código do seu aplicativo se converte em um número.
Então, analisar é o ato de ler algum tipo de entrada, interpretando essa entrada de uma maneira específica, e depois produzindo saída com base na entrada interpretada. Um analisador gera um erro quando a entrada não é o que espera.
Por exemplo, se o usuário insere uma seqüência de caracteres contendo a letra C e você espera que uma seqüência de caracteres contendo um número, como 123, o analisador irá gerar uma exceção dizendo que a entrada está incorreta.
Os erros de tempo de compilação são os mais fáceis de manusear porque o compilador normalmente lhe diz exatamente o que está errado e onde o erro ocorreu. Mesmo que a informação não seja exata, o compilador irá, pelo menos, levá-lo para a área certa do código quebrado, para que você possa procurar o erro que ele contém.
Para garantir que todos entendam com precisão como a linguagem Java deve funcionar, os desenvolvedores criam uma especificação para isso. Esta especificação inclui os elementos do idioma em um idioma especial denominado Backus-Naur Form (BNF). O uso do BNF é um método extremamente preciso de descrever um idioma para que não haja nenhum risco de má interpretação por parte de qualquer pessoa.
Você pode ver uma amostra do BNF para a linguagem Java no Departamento de Ciência da Computação - Daimi. Não se preocupe muito com a possibilidade de ler esta especificação. A maioria dos desenvolvedores nunca aprendeu a interpretar o BNF para os idiomas que eles usam - esse é o domínio dos desenvolvedores de compiladores.
Erros de tempo de execução
O compilador Java não consegue encontrar todos os erros no seu código. Se a forma do código estiver correta (ou seja, você não cometeu nenhum erro ao digitar os elementos que criam o aplicativo), o compilador não encontrará o erro.
Por exemplo, se você inicializar um valor numérico para 5 em vez de 4, o compilador não pode encontrar o erro para você, porque o compilador não faz ideia de que você realmente quisesse digitar 4. Esses tipos de erros criam erros de tempo de execução - os erros que ocorrem em algum momento durante a execução do aplicativo.
Os erros de tempo de execução podem ocorrer em todos os tipos de vezes. Alguns erros são mais prováveis de ocorrer em momentos específicos. A seguinte lista fornece algumas idéias sobre quando os erros de tempo de execução provavelmente ocorrerão:
-
Inicialização: Quando o aplicativo primeiro começa - antes de apresentar qualquer tipo de interface para o usuário ou realizar qualquer trabalho útil - ele passa uma fase de inicialização. Isto é, ao definir uma variável para o tipo incorreto ou tentar usar uma variável antes de inicializar, será notado. Muitos erros relacionados a recursos também ocorrem durante a inicialização porque a maioria dos aplicativos abre recursos necessários durante esse período.
-
Modo de operação: Depois que um aplicativo é inicializado, ele está no modo de operação. Se tiver uma interface de usuário, ele começa a interagir com o usuário. Este é o momento em que a entrada do usuário é mais importante.
Você também encontrará variáveis inicializadas incorretamente neste momento porque o usuário (ou o destinatário da saída do aplicativo, como o sistema), verificará que a saída está incorreta. Os pedidos de recursos do usuário, como um arquivo de dados, também criam erros durante esse período.
-
Processamento de plano de fundo: A maioria dos erros de processamento em segundo plano resulta do ambiente (como a perda de uma conexão de rede), recursos em falta (como um arquivo perdido), variáveis inicializadas incorretamente ou erros na forma como você contou o aplicativo para executar uma tarefa. Algumas tarefas são mais comumente realizadas em segundo plano do que outras são.
Por exemplo, a impressão de um documento ou o download de recursos da Internet são comumente executados em segundo plano, enquanto o usuário continua a trabalhar com o aplicativo em primeiro plano.
-
Desligamento: Quando o usuário (incluindo as contas do sistema) informa o aplicativo, ele não é mais necessário, o aplicativo passa por uma fase de desligamento. Durante esta fase de desligamento, o aplicativo fecha arquivos e executa outras tarefas domésticas que garantem que a aplicação não deixa uma bagunça para o sistema operacional.
Os erros mais comuns que podem ocorrer durante esta fase não estão liberando recursos que seu aplicativo usou e não salvando dados no disco. Claro, erros de codificação podem ocorrer a qualquer momento, e esta fase de operação não é exceção. Você poderia dizer ao aplicativo para fechar cinco arquivos quando apenas quatro deles estão realmente abertos.
O JRE apresentará a maioria dos erros de tempo de execução que ele detecta como exceções. No entanto, o JRE não irá capturar todos os erros no seu aplicativo.Você também deve olhar para a saída do seu aplicativo para determinar se o resultado corresponde às expectativas que você tem para uma determinada entrada.
Além disso, é importante analisar o estado dos recursos que você usa para garantir que eles não estejam danificados de alguma forma. Por exemplo, você precisa garantir que todos os dados que você deve salvar em um arquivo realmente acabam no arquivo quando seu aplicativo é encerrado.
O Java 8 tem uma ênfase maior na segurança, o que significa que você verá mais instâncias do SecurityException enquanto trabalha com seu aplicativo.
Ver um aumento nas exceções de segurança não significa que o seu código esteja com defeito ou que o Java 8 seja preenchido com erros - significa que o Java 8 localiza automaticamente e informa sobre problemas que podem causar problemas de segurança à medida que as pessoas usam seu aplicativo.
A documentação do SecurityException aparece em Java. líquido. Claro, você quer saber o que é todo o burburinho.