·

Ciência da Computação ·

Linguagens de Programação

Envie sua pergunta para a IA e receba a resposta na hora

Fazer Pergunta

Texto de pré-visualização

Programação de Soluções Computacionais Prof Leandro Procópio Alves Aula 21 Agenda Exceções Tratando Exceções Finally Hierarquia de Exceções Exercícios Introdução O que é uma exceção é uma indicação de um problema que ocorre durante a execução de um programa E tratamento de exceção possibilita criar aplicativos que podem resolver ou tratar exceções Exemplo Divisão Analise o seguinte programa O que acontece se o usuário entrar com o número 0 no denominador e inserindo um valor String no numerador ou denominador Como garantir que o programa continue rodando mesmo que o usuário faça uma entrada indevida Exceções Em muitos casos O tratamento de uma exceção permite que um programa continue executando como se nenhum problema tivesse ocorrido Usando exceções é possível escrever programas robustos e tolerantes a falhas que podem lidar com os imprevistos e continuar a executar ou encerrar elegantemente Exceções Sintaxe Como usar try código que pode lançar a exceção catch Exception e capturar a exceção tratar a exceção Exceções Sintaxe Detalhes try inclui o código que pode lançar uma exceção e o código que não deve ser executado se ocorrer uma exceção catch captura e trata um exceção throws lança a exceção para a função que chamou Exceções Divisão Vamos adaptar a classe do exemplo anterior divisão para que ela seja capaz de avisar que um problema pode ocorrer public class MatematicaComExcecao public int dividir int numerador int denominador throws ArithmeticException return numerador denominador Informa que uma exceção pode ser lançada ou seja alguém terá de tratar essa exceção Informa qual o tipo de exceção que pode ser lançada Exceções Divisão Tenta executar esse bloco de código Se houver exceção de InputMismatch então execute esse bloco de código Se houver exceção de Arithmetic então execute esse bloco de código Bloco Finally O Java realiza coleta automática de lixo de memória dessa forma liberando a memória que não está mais sendo utilizada evitando assim a maioria dos vazamentos de memória Entretanto Ainda assim podem ocorrer outros tipos de vazamentos de recurso Exemplo buffer de leitura de arquivos conexões de bancos de dados e conexões de rede que não são fechadas adequadamente Bloco Finally O finally é opcional Ele será executado se uma exceção for ou não lançada no bloco try correspondente um bloco try for fechado usando uma instrução return break ou continue ou simplesmente quando alcançada a chave de fechamento correta Caso em que o bloco finally não executará quando o aplicativo sair precocemente do bloco try chamando o método Systemexit Bloco finally Sintaxe Como usar try código que pode lançar a exceção catch Exception e capturar a exceção tratar a exceção finally código para finally Bloco finally Exemplo Como usar Hierarquia de Exceções Classe Exception Todas as classes de exceção do Java herdam direta ou indiretamente da classe Exception A hierarquia de exceções do Java contém centenas de classes Hierarquia de Exceções Checked Exceptions UnChecked Exceptions Hierarquia de Exceções Basicamente existem dois tipos de exceções Exceções verificadas O compilador verifica se existe um bloco de try catch para tratar a exceção Se não encontrar gerará um erro de compilação Exceções não verificadas Não são checadas durante a compilação Podem ser lançadas em tempo de execução Também são conhecidas como erros de tempo de execução Herdam da classe RuntimeException Criando uma Exceção Para situações específicas É possível escrever uma exceção que reflita o contexto do seu projeto Para isso devese usar herança Criando uma Exceção Utilizando a exceção criada Criando uma Exceção Tratando a exceção Algumas Exceções mais comuns no Java ArrayIndexOutOfBoundsException É lançado para indicar que um vetor foi acessado com um índice ilegal O índice é negativo ou maior ou igual ao tamanho do vetor Algumas Exceções mais comuns no Java NullPointerException Essa exceção é gerada ao se referir aos membros de um objeto nulo Algumas Exceções mais comuns no Java NumberFormatException Essa exceção é gerada quando um método não pode converter uma String em um formato numérico Algumas Exceções mais comuns no Java StringIndexOutOfBoundsException É lançado pelos métodos da classe String para indicar que um índice é negativo ou maior que o tamanho da String Exercício 01 Analise o fragmento de código abaixo O que será mostrado no console quando o seguinte código for executado Considere que o usuário digitou abc123 e 14 Exercício 02 Crie uma classe Estudante que possui Atributos nome notaN1 notaN2 Comportamento calcularMediaFinal mediaFinal n1 x 04 n2 x 06 Faça um programa que leia o nome e duas notas de 5 estudantes Para cada estudante crie um objeto e popule com as informações lidas Faça o tratamento de exceções Seu programa não pode ser encerrado se alguma entrada inválida for digitada Não crie o objeto Estudante caso um valor incorreto seja inserido No final apresente o nome e a média dos objetos que puderam ser criados Exercício 03 Faça uma classe Login Atributos private static final String nome aluno private static final String senha 1234 Comportamento void logarString nomeUsuario String senha Esse método deve mostrar a mensagem Bem vindo aluno caso o nomeUsuario passado como parâmetro seja alunoe a senha seja 1234 Exceções EmptyFieldException exceção lançada caso o campos nome ou senha estejam vazios WrongLoginException exceção lançada caso o nome seja diferente de aluno e senha diferente de 1234 Na classe com main Crie um objeto Login Solicite ao usuário um nome e uma senha Utilize o método nextLine da classe Scanner esse método aceita uma string vazia Assim podemos testar a exceção EmptyFieldException Chame o método logarString nome String senha Faça o programa ficar em loop até que o usuário acerte o nome e a senha Faça o tratamento de exceções