Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares



Documentos relacionados
PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Erros, exceçõ. ções e asserçõ

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções


Tratamento de Exceções. Alberto Costa Neto DComp - UFS

Programação de Computadores - I. Profª Beatriz Profº Israel

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Acesso a Banco. Conexão em Java. Conexão em Java. Programação Orientada a Objetos Profa. Cristiane e Prof. Daniel

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Aula 04 Operadores e Entrada de Dados. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

2 Orientação a objetos na prática

Java. Marcio de Carvalho Victorino

INTRODUÇÃO 12. DOCUMENTAÇÃO INTRODUÇÃO INTRODUÇÃO

Capítulo 5. Tratamento de excepções

UNIVERSIDADE FEDERAL DO PARANÁ

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

BC0501 Linguagens de Programação

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

A Linguagem Java. Alberto Costa Neto DComp - UFS

JSP - ORIENTADO A OBJETOS

Programação online em Java

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ...

Java 2 Standard Edition Como criar classes e objetos

insfcanceof new public switch transient while byte continue extends for int null

Criar a classe Aula.java com o seguinte código: Compilar e Executar

O que é uma Exceção? Call Stack. Java Tratamento de Exceção. de métodos que foram usados até chegar na presente instrução.

Programação Estruturada e Orientada a Objetos. Tratamento de Exceções

Simulado de Linguagem de Programação Java

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Curso Java Starter. 1

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Tratamento de Exceções

Programação Orientada a Objetos em java. Polimorfismo

Prototype, um Design Patterns de Criação

FBV - Linguagem de Programação II. Um pouco sobre Java

Os Sete Hábitos das Exceções Altamente Eficazes

Linguagem de Programação III

1.6. Tratamento de Exceções

Bacharelado em Ciência e Tecnologia BC Processamento da Informação Teoria Arquivos Prof. Edson Pinheiro Pimentel edson.pimentel@ufabc.edu.

THREADS EM JAVA. George Gomes Cabral

CURSO DE PROGRAMAÇÃO EM JAVA

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

INF1013 MODELAGEM DE SOFTWARE

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Padrão Arquitetura em Camadas

Java com Banco de Dados Posgree

Tratamento de Exceção. Programação Orientada a Objetos Java (Rone Ilídio)

Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.

TRATAMENTO DE EXCEÇÕES

22/9/16. Agenda. Erros. Erros. Exceções. Mecanismo de exceções

Analisar os sistemas operacionais apresentados na figura e responder as questões abaixo: Identificar

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

NetBeans. Conhecendo um pouco da IDE

Java para Desktop. Exceções JSE

JavaScript 2.0X X

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br)

Prof. Rogério Albuquerque de Almeida. Programação Orientada a Objetos II JAVA Décima Segunda Aula

UNIVERSIDADE FEDERAL DO PARANÁ

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Tratamento de Exceções. Julio Cesar Nardi

Manual do Desenvolvedor Criptografia de Arquivos do WebTA

Java para Desenvolvimento Web

Aula 30 - Sockets em Java

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Introdução a Java. Hélder Nunes

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Exercícios de Revisão Java Básico

public Agenda() { compromissos = null; } public int getnumerodecompromissos() { if (compromissos==null) return 0; else return compromissos.

Unidade IV: Ponteiros, Referências e Arrays

Guia de Fatores de Qualidade de OO e Java

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

9 Exceções. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

DEFINIÇÃO DE MÉTODOS

Documentação Usando o Javadoc

Programação Orientada a Objetos

Programação Concorrente em Java. Profa Andréa Schwertner Charão DLSC/CT/UFSM

Prática em Laboratório N.02 Criando um serviço Web via NetBeans

Modulo IIa Extra: Object

Um pouco do Java. Prof. Eduardo

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Roteiro 1: Dados, variáveis, operadores e precedência

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Herança. Alberto Costa Neto DComp - UFS

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

UNIVERSIDADE FEDERAL DO PARANÁ

Transcrição:

Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e finally; Diferenciar entre o uso de throw e throws; Utilizar as classes de exceções existentes; Diferenciar entre exceções verificadas e não verificadas; Definir suas próprias classes de exceção;

Exceções O tratamento de exceção é o mecanismo responsável pelo tratamento da ocorrência de condições que alteram o fluxo normal da execução de programas de computadores.

Exceções Em geral, na ocorrência de uma exceção, o estado do programa é gravado em um local prédefinido e a sua execução é direcionada para uma rotina de tratamento.

Exceções Dependendo da situação, a rotina de tratamento pode prosseguir a execução a partir do ponto que originou a exceção, utilizando a informação gravada para restaurar o estado.

Exceções Um exemplo de exceção que normalmente permite o prosseguimento da execução é aquela originada por uma operação aritmética.

Exceções Para o desenvolvedor de uma rotina, lançar uma exceção é um modo útil de assinalar que a rotina não deve continuar a execução.

Exceções Exemplos: argumentos de entrada não são válidos (um denominador igual a zero em uma divisão, por exemplo) um recurso no qual o programa depende não está disponível (um arquivo não encontrado ou um erro em um disco, por exemplo).

O que são exceções? Eventos excepcionais; Erros que ocorrem durante a execução do programa; Causam distúrbios no fluxo normal do programa;

Exemplo 1 package exemploexcecao1; import java.util.scanner; public class ExemploExcecao1 { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Digite seu nome: "); String nome = sc.next(); System.out.println("Digite sua idade: "); int idade = sc.nextint();

Tratamento de Exceções Sempre que um método de alguma classe é passível de causar algum erro, então, podemos usar o método de tentativa - o try. Tudo que estiver dentro do bloco try será executado até que alguma exceção seja lançada, ou seja, até que algo dê errado.

Tratamento de Exceções Quando uma exceção é lançada, ela sempre deve ser capturada. O trabalho de captura da exceção é executado pelo bloco catch. Um bloco try pode possuir vários blocos de catch, dependendo do número de exceções que podem ser lançadas por uma classe ou método.

try { Sintaxe: Capturando exceções: Instruções try-catch <código a ser monitorado para exceções> catch (<ClasseExceção> <nomeobj>) { <tratar se ClasseExceção1 ocorrer>

Tratando o exemplo 1 (versão 1) package exemploexcecao1; import java.util.scanner; public class ExemploExcecao1 { public static void main(string[] args) { Scanner sc = new Scanner(System.in); System.out.println("Digite seu nome: "); String nome = sc.next(); System.out.println("Digite sua idade: "); try{ int idade = sc.nextint(); catch( Exception e){ System.out.println( Você informou a idade errada! );

Tratando o exemplo 1 (versão 2)... boolean erro; do { try { System.out.println("Digite sua idade: "); int idade = sc.nextint(); erro = false; catch (Exception e){ System.out.println("Você informou a idade errada!"); erro = true; sc.nextline(); while (erro);...

Palavra-chave finally Finally é o trecho de código final. A função básica de finally é sempre executar seu bloco de dados mesmo que uma exceção seja lançada. É muito útil para liberar recursos do sistema quando utilizamos, por exemplo, conexões de banco de dados e abertura de buffer para leitura ou escrita de arquivos. Finally virá após os blocos de catch.

Capturando exceções: Palavra-chave finally Sintaxe: try { <código a ser monitorado para exceções> catch (<ClasseExceção1> <nomeobj>) { <tratar se ClasseExceção1 ocorrer>... finally { <código a ser executado antes do bloco try ser finalizado>

Exemplo de finally try { objqualquer.writeline("escrevendo algo..."); catch (Exeption e){ System.out.println("Erro ao digitar..."); finally { objqualquer.close();

Capturando exceções: Palavra-chave finally Bloco de código é executado em um desses quatro cenários: 1.Execução normal sem exceções; 2.Um bloco catch captura e trata uma exceção lançada; 3.Exceção lançada não é capturada por nenhum bloco catch; 4.Saída forçada usando instruções return, continue ou break.

Situações 1 e 2 Execução normal sem exceções; Um bloco catch captura e trata uma exceção lançada; Scanner sc = new Scanner(System.in); try { System.out.println("Digite sua idade: "); int idade = sc.nextint(); catch (Exception e) { System.out.println("Você informou a idade errada!"); finally { System.out.println("Executei!");

Situação 3 Exceção lançada não é capturada por nenhum bloco catch; Scanner sc = new Scanner(System.in); try { System.out.println("Digite sua idade: "); int idade = sc.nextint(); catch (ArithmeticException e) { System.out.println("Você informou a idade errada!"); finally { System.out.println("Executei!");

Situação 3 Desta forma, então é possível ter um bloco de try / finally sem o catch: Scanner sc = new Scanner(System.in); try { System.out.println("Digite sua idade: "); int idade = sc.nextint(); finally { System.out.println("Executei!");

Situação 4 Saída forçada usando instruções return, continue ou break; Scanner sc = new Scanner(System.in); try { System.out.println("Digite sua idade: "); int idade = sc.nextint(); return; catch (ArithmeticException e) { System.out.println("Você informou a idade errada!"); finally { System.out.println("Executei!");

Hierarquia

Classe Throwable Classe de origem de todas as classes de exceção Sub-classe Error Sub-classe Exception

Classe Error Usada pela JVM para manipular erros ocorridos no ambiente de execução Geralmente, esses erros encontram-se além do controle dos programas Exemplos: Erro de falta de memória Erro de acesso ao disco rígido

Classe Exception Circunstâncias que os usuários podem tratar Resultam de falhas no código do programa Exemplos: Erro em uma divisão por zero Erro ao tentar acessar um índice inexistente um array

Exceções As exceções são, na verdade, instâncias de classes. E como qualquer classe ou objeto, podemos facilmente manipular.

Exceções Existem métodos comuns entre todas as classes de Exceções, dentre as quais podemos citar: tostring(): Converte os dados da exceção para String para visualização. printstacktrace(): Imprime na saída de erro padrão (geralmente console) todos os frames de onde foram detectados erros. Útil para depuração no desenvolvimento, pois mostra todo o histórico do erro, além das linhas onde foram ocasionados.

Exceções getcause(): Retorna a causa da Exceção, ou null se a causa for desconhecida ou não existir. getmessage(): Retorna uma string com o erro. É uma forma simples e elegante de mostrar a exceção causada, geralmente, utilizada como forma de apresentação ao usuário.

Hierarquia das classes de Exceções Throwable Error LinkageError,... VirtualMachineError,... Exception ClassNotFoundException CloneNotSupportedException IlegalAccessExcption InstatiationException InterruptedException IOException EOFException FileNotFoundException RuntimeException ArithmeticException ArrayStoreException ClassCastException...

Ordem de captura Exemplo que não compila try { catch (Exception e){ catch (ArithmeticException e){

Ordem de captura Exemplo que compila try { catch (ArithmeticException e){ catch (Exception e){

Lançando de exceções: Palavra - chave throws É necessário um método para cada catch ou lista de exceções que podem ser lançadas Exceto para as Classes Error, RuntimeException e suas sub-classes Se um método causar uma exceção mas não capturá-la, então deve-se utilizar a palavra-chave throws Sintaxe: <tipo> <nomedométodo> (<argumento>*) throws <listadeexceção> { <Corpo do Método>

Exemplo 1 public static void funcao1(){ try { funcao2(); catch (Exception e){... public static void funcao2() throws Exception {...

Exemplo 2 public static void main(string[] args) { try { funcao1(); catch (Exception e){... public static void funcao1() throws Exception { funcao2(); public static void funcao2() throws Exception {...

Exemplo 3 public static void main(string[] args) throws Exeption { funcao1(); public static void funcao1() throws Exception { funcao2(); public static void funcao2() throws Exception {...

Lançando de exceções: Palavra-chave throw Java nos permite lançar exceções: throw <objetoexceção>; Exemplo: throw new ArithmeticException("testing...");

Exemplo 1 public static void funcao1(){ try { funcao2(); catch (Exception e){... public static void funcao2() throws Exception { throw new Exception("Deu erro!");

Tipos de Exceções Os projetistas da linguagem Java desenvolveram um conjunto especial de exceções: Exceções não-verificadas Exceções verificadas

Exceções verificadas As exceções verificadas (checked exceptions) são aquelas que se um método pode lançá-la, ela deve constar em seu cabeçalho. Todas as exceções que derivam de Exception de forma direta ou indireta, são exceções verificadas.

Exceções não-verificadas As exceções nao-verificadas são aquelas que quando um método pode lança-la, não necessita-se mostrar em seu cabeçalho; Caso o lançamento conste no cabeçalho, esta exceção não precisa é obrigatória ser capturada com try/catch. Todas as exceções derivadas de RuntimeException são não verificadas.

Exemplo 1 public static void funcao1(){ funcao2(); public static void funcao2() { throw new RuntimeException("Deu erro!");

Exemplo 2 public static void funcao1(){ funcao2(); public static void funcao2() throws RuntimeException { throw new RuntimeException("Deu erro!");

Exemplo 3 public static void funcao1(){ try { funcao2(); catch (RuntimeException e){... public static void funcao2() { throw new RuntimeException("Deu erro!");

Exemplo 4 public static void main(string[] args) throws Exception { funcao1(); public static void funcao1() throw Exception{ funcao2(); public static void funcao2() { throw new RuntimeException("Deu erro!");

Vantagens e desvantagens Exceções verificadas Vantagem: fazem do código mais seguro já que não é permitido ignorar exceções conhecidas e dá oportunidade de recuperar de problemas; Desvantagem: obriga a inserir try/catch ao longo do código Exceções não-verificadas Vantagem: torna a escrita do código mais fácil de escrita e leitura; Desvantagem: ao acontecer uma exceção o programa é imediatamente finalizado.

Criação de classes de Exceções Assim como qualquer objeto, em java também é possível criar suas próprias exceções.

Criação de classes de Exceções Imagine um cenário que nenhuma exceção existente faça sentido para ser lançada por você. Por exemplo imagine que por algum motivo você precisa que uma exceção seja lançada quando a letra A ou a não existe em determinada frase, como não existe nenhuma exceção específica para este caso será necessário criar uma exceção.

Exemplos de uso public class SemLetraAException extends Exception { public String tostring(){ return "Não existe letra A em sua frase"; public class ExemploExcecao{ public void imprima(string frase) throws SemLetraAException{ if(!frase.contains("a")!frase.contains("a")) throw new SemLetraAException(); System.out.println(frase);

Exemplo de uso public class Exemplo{ public static void main(string args){ ExemploExcecao obj = new ExemploExcecao(); try{ obj.imprima( Tem erro! ); catch (SemLetraAException e){ System.out.println(e);