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

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

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

Tratamento de Exceções. Prof. Leonardo Barreto Campos 1

Tratamento de Exceções cont. Profa. Thienne Johnson EACH/USP

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

Tratamento de Exceções

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

Tratamento de Exceções. LPG II Java. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceção. Tratamento de Exceções. Vantagens de TE. Exemplos de Exceções. Exemplo: Divide1 (sem TE)

Notas de Aula 09: Tratamento de exceções

Tratamento de Exceções. Julio Cesar Nardi

AULA TEÓRICA 3. Tema 4. Excepções Ø Tratamento de excepções

Programação Java. Tratamento de Exceções

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

Tratamento de Exceções. Grupo de Linguagens de Programação Departamento de Informática PUC-Rio

Tratamento de Exceções. Java Avançado. Tratamento de Exceções. Conceito de Exceções. Exemplo

Tratamento de Exceções

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

Programação Orientada a Objetos SANTOS, Rafael (PLT)

Tratamento de Exceções. Prof. Marcelo Roberto Zorzan

O tratamento de erros em Java

Programação Orientada a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc.

Java para Desktop. Exceções JSE

Mecanismo de exceções em Java

TRATAMENTO DE EXCEÇÕES

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação de Computadores II TCC /Turma A 1

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Laboratório de Programação. Aula 12 Java 5COP088. Aula 12 Exceções Prof. Dr. Sylvio Barbon Junior. Sylvio Barbon Jr

Prof. Fernando V. Paulovich 8 de novembro de SCC Programação Orientada a Objetos

Paradigmas da Programação PPROG. Linguagem JAVA. Exceções. (Livro Big Java, Late Objects Capítulo 7) Nelson Freire (ISEP DEI-PPROG 2015/16) 1/45

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

JAVA. Tópicos Especiais de Programação Orientada a Objetos. sexta-feira, 28 de setembro de 12

Computação II Orientação a Objetos

[Desenvolvimento OO com Java] Exceções e controle de erros

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

Exceções. Criando suas exceções

Programação Orientada a Objetos

4 Conceito de Herança

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

Programação de Computadores II

Programação Orientada a Objetos II

Exceções. SCC0504 Programação Orientada a Objetos. Luiz Eduardo Virgilio da Silva ICMC, USP

Recapitulando. Construtores: (Overload assinatura) public Circle() {...} public Circle(double x, double y, double r) {... }

Computação II Orientação a Objetos

Tratamento de Exceções em Java

Tratamento de Exceções. Profa. Thienne Johnson EACH/USP

Programação Orientada a Objetos. Manipulação de Exceções

Exceções AULA 13. Ricardo Massa F. Lima Sérgio C. B. Soares

terminar o programa; retornar um valor de erro indicando falha; retornar e ignorar o problema; chamar uma função para tratar o erro, etc...

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

Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho

Aula 13 POO 1 Tratamento de Exceções no Java. Profa. Elaine Faria UFU

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

9 Classes Abstractas e Interfaces

Aula 13 Tratamento de Exceções. Disciplina: Programação Estruturada e Orientada a Objetos Prof. Bruno Gomes

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Linguagens de Programação Conceitos e Técnicas. Exceções

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

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Programação Orientada a Objetos (DPADF 0063)

Palavras Reservadas da Linguagem Java

Controlando Erros com Exceções

Exceções. Profa. Patrícia A. Jaques Slides alterados por Leandro Tonietto Mar-12. quarta-feira, 21 de março de 12

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação por Objectos. Java

Ficha Prática 10. António Nestor Ribeiro, Paulo Azevedo, Mário Martins PPIV (LESI) 2005/06

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

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

Linguagens de Programação 8 Exceções

Classes e Objetos. Sintaxe de classe em Java

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

APIs Java: Tratamento de exceções e Coleções

Introdução à Tecnologia Java 02/2012. Java Aula 06. Banco de Dados Exemplo com JTable 19/09/2012. Celso Olivete Júnior.

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

Programação OO em Java

Tipos, Literais, Operadores

Tipos, Literais, Operadores

Tratamento de Erro e Javadoc. Professor: Norton T. Roman

Tratando exceções em Java

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

Tratamento de Exceções

01. [Sebesta, 2000] Defina exceção, manipulador de exceções, levantamento de uma exceção, desativação de uma exceção e exceção incorporada.

Extensão de classes em Java - noções elementares - PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

O problema da herança múltipla e o uso de Interfaces. Herança múltipla. Interfaces. Definindo Interfaces 30/11/2016

Linguagem Java - Introdução

Tratamento de Exceções, Multithreads e arquivos (em Java) Programação Orientada a Objetos

[Magee 1999] Concurrency State Models and Java Programs, Jeff Magee, Jeff Kramer, John Wiley 1999.

UNIVERSIDADE FEDERAL DE MATO GROSSO DO SUL SISTEMAS DE INFORMAÇÃO - CÂMPUS DE COXIM FUNDAMENTOS EM ORIENTAÇÃO A OBJETOS

Tipos de dados e comandos POO

Programação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação

Transcrição:

6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa é transferido do ponto onde ocorre a excepção para um ponto que pode ser especificado pelo utilizador. - Uma excepção diz-se lançada (thrown) no ponto onde ocorre e diz-se capturada (catched) no ponto para onde o controlo de execução é transferido - Cada excepção é representada por uma instância da classe Throwable ou de uma das suas subclasses. - Objecto usado para guardar informação desde o ponto onde a excepção ocorre até ao ponto onde é capturada. Apontamentos de POO - 1

O tratamento de uma excepção é definido pela cláusula catch de uma instrução try: try { - bloco de instruções, nas quais queremos ter a possibilidade de detectar a ocorrência de erros recuperáveis. catch ( <classe da excepção> < instância da excepção gerada> ) { - instruções para tratamento da excepção considerada [... outras cláusulas catch]* [ finally { - instruções que serão executadas, ocorra ou não uma exceção no bloco try ]* *[ opcional] Uma excepção pode ser lançada porque: 1) A JVM detecta uma violação da semântica da linguagem Exemplo - divisão por zero - o limite de um dado recurso foi ultrapassado 2) Foi executada uma instrução throw throw geração explícita de uma excepção definida ou não pelo utilizador throw new < construtor da classe exception ou de uma sua subclasse > Apontamentos de POO - 2

Existem dois tipos de excepções: A - Excepções verificáveis pelo compilador O compilador verifica se o programa trata as excepções que poderão ocorrer no código. Para cada excepção verificável, o método onde essa excepção pode ocorrer deve: - prever o tratamento da exceção (try catch) ou - lançar a excepção, através da cláusula throws, para que seja tratada no método invocador ou noutro mais externo Ex. public void metodoexemplo () throws <nome da classe da excepção> {... public static void main (String [] args ) throws IOException { B - Excepções não verificáveis pelo compilador são objetos das classes RunTimeException, Error e despectivas subclasses RunTimeException exceções cuja ocorrência é difícil de ser verificável pelo programador Error erros não recuperáveis Apontamentos de POO - 3

Hierarquia das classes de excepção em Java: Object Throwable Error Exception ArithmeticException ClassNotFoundException... InterruptedException... IndexOutOfBoundsException...... RuntimeException java.lang... NullPointerException IOException java.io Apontamentos de POO - 4

Exemplo 1: Definir uma excepção Subclasse de Exception public class Bomba extends Exception { public Bomba (){ super(); public Bomba ( String s ){ super ( s ); public class Teste1 { public static void explode () throws Bomba { throw new Bomba(); public static void main (String []args) { try { explode(); catch ( RuntimeException e ) { System.out.println ( RuntimeExplode + e.getmessage(); Apontamentos de POO - 5

catch ( Bomba b ) { System.out.println ( Bomba ); // main //Teste1 Output do programa: Bomba A exceção que ocorre não é compatível com a classe RunTimeException mas é compatível com a classe Bomba. Exemplo 2: cláusula finally public class Teste2 { public static void explode () { Subclasse de RunTimeException, exceção não verificável, não é necessário lançar a excepção. throw new NullPointerException(); public static void main (String []args) { try { explode(); catch ( Bomba e ) { System.out.println ( Bomba ); finally { System.out.println ( Exceção não capturada ); Apontamentos de POO - 6

// main //Teste2 Output do programa: Exceção não capturada java.lang.nullpointerexception at Teste2.Explode (Teste2.java:7) at Teste.main ( Teste2.java:11) Herança e cláusula throws - Um método que sobrepõe ( overrides ) outro não pode declarar lançar mais exceções do que o método que é sobreposto. Exemplo: public class C1 { public void m2() throws Exception { System.out.println ( Método 2 da classe C1 ); public class C2 extends C1 { Válido public void m2()* throws InterruptedException, ClassNotFoundException{ System.out.println ( Método 2 da classe C2 ); * O método m2 da classe C2 sobrepõe m2 da classe C1 Apontamentos de POO - 7

Herança e cláusula throws (cont...) - Cada excepção declarada em m2 da classe C2 tem que ser do mesmo tipo (classe) de uma excepção lançada em m2 de C1 ou de um seu subtipo (subclasse). - No método m2 da classe C1 tem que ser lançada a mesma excepção que em m2 de C2, ou uma excepção de uma sua superclasse. Exemplo 3: Qual o output do seguinte programa? package excepcoes; public class TesteException extends Exception { public TesteException (){ super(); public TesteException ( String s ){ super ( s ); Apontamentos de POO - 8

public class Teste { public static int atirador (String s) try { if ( s.equals ( dividir ) ) { int i= 0 ; return i/i; if ( s.equals( null ) ) { s = null; return s.length(); if ( s.equals ( teste ) ) { throws TesteException { throw new TesteException ( Teste ); TesteException é uma exceção verificável return 0; cria uma instância de TesteException //try finally { System.out.println ( **** ); System.out.println ( [Atirador( + s + ) executado] ); sempre executado, quer ocorra uma exceção quer não Apontamentos de POO - 9

//atirador public static void main (String []args) { String [] txt = new String [4]; txt [0] = dividir ; txt [1] = null ; txt [2] = não ; txt [3] = teste ; for ( int i = 0; i< txt.length ; i++ ){ try { // main // Teste atirador (txt [i] ); System.out.println ( Teste( + txt[i] + ) + catch (Exception e){ não lançou uma exceção ); System.out.println ( Teste( + txt[i] + ) lançou uma + e.getclass() + \n com a mensagem + e.getmessage() ); - O método main invoca o método atirador 4 vezes Apontamentos de POO - 10

- Cada excepção lançada pelo método atirador será capturada pelo main. Output **** [Atirador (dividir) executado] Teste (dividir) lançou uma class java.lang.arithmeticexception com a mensagem / by zero **** [Atirador (null) executado] Teste (null) lançou uma class java.lang.nullpointerexception com a mensagem null **** [Atirador (não) executado] Teste (não) não lançou uma exceção **** [Atirador (teste) executado] Teste (teste) lançou uma class excepcoes.testeexception com a mensagem teste Apontamentos de POO - 11