Exceção
Uma exceção (abreviação de "evento excepcional") é um erro ou evento inesperado que acontece enquanto um programa está sendo executado. Quando ocorre uma exceção, ela interrompe o fluxo do programa. Se o programa puder lidar com a exceção e processá-la, ele poderá continuar sendo executado. Se uma exceção não for tratada, o programa poderá ser forçado a ser encerrado.
Várias linguagens de programação oferecem suporte a exceções, embora elas sejam usadas de maneiras diferentes. Por exemplo, as exceções são uma parte integral da linguagem Java e costumam ser usadas para controlar o fluxo de um programa. Java inclui uma Exception classe, que tem dezenas de subclasses, como TimeoutException, UserException e IOException. Subclasses como IOException contêm exceções mais específicas, como FileNotFoundException e CharacterCodingException, que podem ser "lançadas" se um arquivo não for encontrado ou se a codificação de caracteres de uma string não for reconhecida.
Outras linguagens usam exceções apenas para capturar erros fundamentais em tempo de execução, como falhas na alocação de memória ou erros no nível do sistema. Por exemplo, um programa em C++ pode lançar a exceção bad_alloc quando não é possível alocar memória e a exceção system_error quando o sistema operacional produz um erro.
Tratamento de exceções
Um programa de computador bem escrito verifica se há exceções e as trata adequadamente. Isso significa que o desenvolvedor deve verificar quais exceções podem ocorrer e escrever código para processá-las. Se um programa tratar bem as exceções, erros inesperados poderão ser detectados e gerenciados sem que o programa sofra um travamento.
As exceções são "lançadas" quando ocorrem e são "capturadas" por outro código do programa. Elas podem ser lançadas explicitamente usando a instrução throw ou implicitamente dentro de uma cláusula try. A seguir, há um exemplo de sintaxe de "try / catch" em Java. O código a seguir tenta dividir por zero, mas lança uma exceção ArithmeticException e retorna 0 como resultado.
1. int a = 11;
2. int b = 0;
3. int result = 0;
4. try {
5. int c = a / b;
6. result = c;
7. } catch(ArithmeticException ex) {
8. result = 0;
9. }
10. return result;
Uma exceção é lançada na linha 5 (quando 11 é dividido por 0), portanto o restante da instrução try (linha 6) não é executado. Em vez disso, a exceção é capturada na linha 7 e um resultado de 0 é retornado.
Teste seus conhecimentos