Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tratamento de exceções Exceções As exceções ocorrem quando algo imprevisto acontece, elas podem ser provenientes de erros de lógica ou acesso a recursos que talvez não estejam disponíveis. Exceções Uma exceção indica um problema que ocorre quando um programa é executado. O nome “exceção” sugere que o problema ocorre com pouca frequência — se a “regra” é que uma instrução normalmente executa corretamente, então o problema representa a “exceção à regra”. O tratamento de exceção ajuda a criar programas tolerantes a falhas que podem resolver (ou tratar) exceções. Em muitos casos, isso permite que um programa continue a executar como se nenhum problema fosse encontrado. Exemplos de exceções Fatores externos Tentar abrir um arquivo que não existe. Tentar fazer consulta a um banco de dados que não está disponível. Tentar escrever algo em um arquivo sobre o qual não se tem permissão de escrita. Tentar conectar em servidor inexistente. Erro de lógica Tentar manipular um objeto que está com o valor nulo. Dividir um número por zero. Tentar manipular um tipo de dado como se fosse outro. Tentar utilizar um método ou classe não existentes Try and catch Try • Um bloco try inclui o código que talvez lance (throw) uma exceção e o código que não deve executar se essa exceção ocorrer. • As exceções podem emergir por meio de código explicitamente mencionado em um bloco try, por chamadas para outros métodos ou até mesmo pelas chamadas de método profundamente aninhadas iniciadas pelo código no bloco try. Catch • Um bloco catch inicia com a palavra-chave catch e um parâmetro de exceção seguido por um bloco de código que trata a exceção. Esse código executa quando o bloco try detecta a exceção. • Pelo menos um bloco catch ou finally deve seguir imediatamente o bloco try. • Um bloco catch especifica entre parênteses um parâmetro de exceção identificando o tipo de exceção a tratar. O nome do parâmetro de exceção permite ao bloco catch interagir com um objeto de exceção capturado. • Uma exceção não capturada é uma exceção que ocorre para a qual não há nenhum bloco catch correspondente. Uma exceção não capturada fará com que um programa termine antes da hora se esse programa contiver somente uma thread. Caso contrário, somente a thread em que a exceção ocorreu terminará. O restante do programa será executado, mas possivelmente com resultados adversos. Tratamento • Se ocorrer uma exceção em um bloco try, o bloco try termina imediatamente e o programa transfere o controle ao primeiro bloco catch com um tipo de parâmetro que corresponde ao tipo de exceção lançada. • Depois que uma exceção é tratada, o controle de programa não retorna ao ponto de lançamento, porque o bloco try expirou. Isso é conhecido como modelo de terminação do tratamento de exceção. • Se houver múltiplos blocos catch correspondentes quando uma exceção ocorrer, somente o primeiro é executado. • A cláusula throws especifica uma lista separada por vírgula das exceções que o método pode lançar, e aparece após a lista de parâmetros do método e antes do corpo do método. Tratando exceções Para tratar as exceções em Java são utilizados os comandos try e catch. Sintaxe try { //trecho de código que pode vir a lançar uma exceção } catch(tipo_exceçao_1 e) { //ação a ser tomada } catch(tipo_exceçao_2 e) { //ação a ser tomada } catch(tipo_exceçao_n e) { //ação a ser tomada } Resumo Para lidar com uma exceção, coloque qualquer código que possa lançar uma exceção em uma instrução try. O bloco try contém o código que pode lançar uma exceção, e o bloco catch contém o código que trata a exceção se uma ocorrer. Podem haver muitos blocos catch para tratar com diferentes tipos de exceções que podem ser lançadas no bloco try correspondente. Exemplo - null public class aumentaFrase { public static void main(String args[]) { String frase = null; String novaFrase = null; novaFrase = frase.toUpperCase(); System.out.println("Frase antiga: "+frase); System.out.println("Frase nova: "+novaFrase); } } ocorrerá a exception Exception in thread "main" java.lang.NullPointerException at aumentaFrase.main(aumentaFrase.java:15) Exemplo null public static void main(String args[]) { String frase = null; String novaFrase = null; try { novaFrase = frase.toUpperCase(); } catch(NullPointerException e) //CAPTURA DA POSSÍVEL exceção. { //TRATAMENTO DA exceção System.out.println("O frase inicial está nula, para solucional tal o problema, foi lhe atribuito um valor default."); frase = "Frase vazia"; novaFrase = frase.toUpperCase(); } System.out.println("Frase antiga: "+frase); System.out.println("Frase nova: "+novaFrase); } comando finally try { //trecho de código que pode vir a lançar uma exceção } catch(tipo_exceçao_1 e) { //ação a ser tomada } catch(tipo_exceçao_2 e) { //ação a ser tomada } catch(tipo_exceçao _n e) { //ação a ser tomada } finally { //ação a ser tomada } public class aumentaFrase { public static void main(String args[]) { String frase = null; String novaFrase = null; try { novaFrase = frase.toUpperCase(); } catch(NullPointerException e) { System.out.println("O frase inicial está nula, para solucional tal o problema, foi lhe atribuito um valor default."); frase = "Frase vazia"; } finally { novaFrase = frase.toUpperCase(); } System.out.println("Frase antiga: "+frase); System.out.println("Frase nova: "+novaFrase); } } Referência Devmedia - Tratando exceções em Java https://www.devmedia.com.br/tratando-excecoes-em-java/25514 DEITEL, P.H. - Java como programar. 10ª Edição. São Paulo: Pearson, 2016
Compartilhar