Linguagem de Programação JAVA Tiago Alves de Oliveira Adaptado de M. Nery Agenda Tratamento de Exceções Try Catch Finally Lista de Exercícios Introdução As exceções são uma indicação de um problema que ocorre durante a execução de um programa. Em Java é possível tratar as exceções que poderiam ocorrer para que o programa continue ou termine elegantemente. Exemplo a seguir: Exemplo: Divisão por Zero sem Tratamento de Exceção Programa Exemplo: Divisão por Zero sem Tratamento de Exceção Saída Exemplo: Entrada de String no Lugar de Números Inteiros Saída Exemplo: Tratando ArithmeticExceptions e InputMismatchExceptions Com o tratamento de exceções, o programa captura e trata (isto é, lida com) a exceção. O exemplo a seguir permite que o usuário tente novamente se uma entrada inválida for inserida (zero para denominador ou entrada de não-inteiro). Modelo para Tratamento de Exceções A estrutura de como tratar um erro ou exceção é: try - é usada para indicar um bloco de código que possa lançar (throw) uma exceção. catch - serve para manipular as exceções, ou seja, tratar o erro. finally - sempre será executado depois do bloco try/catch. Modelo para Tratamento de Exceções Bloco try Contém o código que pode lançar (throw) uma exceção. Consiste na palavra – chave try seguida por um bloco de código entre chaves. Modelo para Tratamento de Exceções Bloco Catch Captura e trata uma exceção. Começa com a palavra-chave catch. Parâmetro de exceção entre parênteses o parâmetro de exceção identifica o tipo de exceção. Bloco do código entre chaves que executa quando uma exceção do tipo adequado ao parâmetro ocorre. Atenção! É um erro de sintaxe colocar código entre um bloco try e seus blocos catch correspondentes. Atenção! Cada bloco catch pode ter apenas um único parâmetro. Modelo para Tratamento de Exceções Bloco Finally Opcional em uma instrução try. Se presente, é colocado depois do último bloco Catch. Executa se uma exceção for lançada no bloco try correspondente ou qualquer um dos seus blocos catch correspondentes. Em geral, contém código de liberação de recursos. Modelo para Tratamento de Exceções Retomada Modelo de retomada do tratamento de exceções: O controle do programa é retomado logo depois do ponto de lançamento. Utilizando a cláusula throws Cláusula throws Especifica as exceções que um método pode lançar. Aparece depois da lista de parâmetros do método e antes do corpo do método. Contém uma lista separada por vírgulas das exceções. As exceções podem ser lançadas pelas instruções no corpo do método ou pelos métodos chamados. Parte da Hierarquia de Exceções Parte da Hierarquia de Exceções Throwable - é o pai de todas as exceções. Error - não são exceções, e sim erros que jamais poderiam ter acontecido. ex.: estouro da memória. Exception - as classes que deveriam aqui, lança exceções e não erros de programação. Exemplo: tentar abrir um arquivo que não existe. Então, é lançada uma exceção verificada, porque a classe de leitura de arquivos deriva de Exception. RuntimeException - são exceções que indicam erros de programas (não de lógica, pois senão não passaria pelo compilador). Esse tipo de exceção é conhecida como não verificada. Obs.: Implicitamente, todas as classes em java automaticamente já lançam uma exceção de RuntimeException. Resolvendo o Exemplo Resolvendo o Exemplo Outros Tipos de Exceções Comuns IndexOutOfBoundsException: Acessar uma posição de um vetor, por exemplo, inexistente. Lista de Exercícios 1. Faça uma programa em que: 1. O usuário precise entrar com o nome completo, peso e altura. 1. 2. Calcule o IMC deste usuário e apresente na tela. 1. 2. Exceção: peso e altura com entradas inválidas. Exceção: divisão por zero. Crie um programa que preencha uma matriz de 10x10 com valores digitados pelos usuários. 1. O usuário deverá digitar a posição da matriz 1. 2. 2. Exceção 1: posição da matriz inválida. Exceção II: valor de entrada do usuário inválido. Calcule a média dos valores da matriz.