Errors and exceptions

Documentos relacionados
Errors and exceptions

Tipos genéricos (cont)

Streams II. Overview. The notion of stream Java I/O stream hierarchy Files, and file access using streams Serialization

Bruce Eckel, Thinking in Patterns with Java, cf. José Valente de Oliveira 13-1

Java Collections Framework III

Binding and Casting. Bruce Eckel, Thinking in Java, 4th edition, PrenticeHall, New Jersey, cf.

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

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

Herança e passagem de parâmetro AULA 09

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

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

Tratamento de Exceções

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

Tipos, Literais, Operadores

Tipos, Literais, Operadores

O tratamento de erros em Java

Mecanismo de exceções em Java

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

Programação Orientada a Objetos (DPADF 0063)

1. Estude e implemente a classe Exemplo1 apresentada abaixo:

TRATAMENTO DE EXCEÇÕES

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

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

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

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Tratamento de Exceções em Java

Tratamento de Exceções. Julio Cesar Nardi

Java para Desktop. Exceções JSE

Programação Estruturada e Orientada a Objetos

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

Programação por Objectos. Java

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

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

Programação Orientada a Objetos

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

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

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

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

private void btapresentanomeactionperformed(java.awt.event.actionevent evt) {

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

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

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

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

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.

Interfaces POO. Prof. Marcio Delamaro

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

Instituto Superior de Engenharia de Lisboa

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

VGM. VGM information. ALIANÇA VGM WEB PORTAL USER GUIDE June 2016

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

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

Tipos abstratos de dados (TADs)

COMO ESCREVER PARA O ENEM: ROTEIRO PARA UMA REDAçãO NOTA (PORTUGUESE EDITION) BY ARLETE SALVADOR

Exceções. Criando suas exceções

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

Tratamento de Erros. Sérgio Luiz Ruivace Cerqueira

Tipos genéricos (cont)

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

Programação Orientada a Objetos II

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

Controlando Erros com Exceções

Java Basico Parte II. Para obter um comportamento polimorco fazer: cada classe que os herda. Polimorsmo em Java. I Excepc~oes.

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

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

A B Classe Genérica D A C. Classe Especializada. Classe Especializada. Características Herdadas

Palavras Reservadas da Linguagem Java

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

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

Manipulação de excecões e manipulação de eventos

Introdução. LP OO desenvolvida pela Sun no início da década de 90 com sintaxe semelhente a C\C++. C C++.

O PRíNCIPE FELIZ E OUTRAS HISTóRIAS (EDIçãO BILíNGUE) (PORTUGUESE EDITION) BY OSCAR WILDE

Adoção: guia prático doutrinário e processual com as alterações da Lei n , de 3/8/2009 (Portuguese Edition)

ORIENTAÇÃO A OBJETOS

GERENCIAMENTO PELAS DIRETRIZES (PORTUGUESE EDITION) BY VICENTE FALCONI

Tratamento de Exceções

Linguagem Java - Introdução

Aspectos Multidisciplinares das Artes Marciais: 1 (Portuguese Edition)

RMI - Remote Method Invocation

A oração de Jabez: Alcançando a bênção de Deus (Portuguese Edition)

Computação II - Java - Teste 1.2 Prof. Adriano Joaquim de Oliveira Cruz 2015/04/27

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

Programação de Computadores II

DIBELS TM. Portuguese Translations of Administration Directions

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

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

TDD Desenvolvimento Guiado por Testes (Portuguese Edition)

Nome: Número: Primeira Parte (7 valores) Segunda Parte (3 valores)

Modelagem de Processos com BPMN (2ª edição) (Portuguese Edition)

Meditacao da Luz: O Caminho da Simplicidade

Tipos de dados e comandos POO

Energia dos Chakras, Saúde e Autotransformação (Portuguese Edition)

Linguagem Java Parte I. Sintaxe. Algumas características

Erros que os Pregadores Devem Evitar (Portuguese Edition)

Computação II Orientação a Objetos

Medicina Integrativa - A Cura pelo Equilíbrio (Portuguese Edition)

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

Plataforma para Agentes

Transcrição:

Errors ad exceptios Bruce Eckel, Thikig i Java, 4th editio, PreticeHall, New Jersey, cf. http://midview.et/books/tij4 José Valete de Oliveira 14-1 Overview Itrodução Testes e Testes uitários Noção de Exceção A hierarquia Throwable e as exceções pré-defiidas do Java O laçameto de exceções e o sializador throw A clausula throws O maipulador de exceções catch e os blocos try e fially Exceções defiidas pelo programador Asserções Coclusões José Valete de Oliveira 14-2 1

Algus tipos de erros durate a execução de um programa José Valete de Oliveira 14-3 10-3 Erros lógicos depuram-se (quado detetados)! José Valete de Oliveira 14-4 10-4 2

Test types Uit q Smallest testable part of a program (method) Compoet q Class or group of related classes Itegratio q Iteractio betwee compoets José Valete de Oliveira 14-5 Uit test characteristics Very limited i scope Idepedet from each other Ru each time somethig is chaged Ru automatically Ru fast; the fastest the better José Valete de Oliveira 14-6 3

Testes implemetam-se ates do código! José Valete de Oliveira 14-7 Melhore a testabilidade do seu código José Valete de Oliveira 14-8 4

Error hadlig José Valete de Oliveira 14-9 Classical techiques for error hadlig José Valete de Oliveira 14-10 5

Exceptio I programmig, a exceptio is a descriptio of a uexpected rutime evet I Java, a exceptio is represeted by a object of the Throwable hierarchy José Valete de Oliveira 14-11 A hierarquia Throwable e as exceções pré-defiidas do Java 14-12 6

Checked vs uchecked exceptios Checked Exceptios Must either be caught by a method or declared i its sigature. Uchecked Exceptios Not required to be caught or declared o a method, icludig: q Errors geerated by the JVM q Rutime exceptios geerated by either methods or the JVM itself. José Valete de Oliveira 14-13 /** @versio 1.0 */ public class Fractio { Example: the class Fractio, agai private it um, de; public it umerator() {retur um; public it deomiator() {retur de; public Fractio() { this(0); public Fractio(it ) { um= ; de = 1; public Fractio (it, it d) { if (d ==0) { System.err.prit("Fractio.deomiator() caot be zero"); System.exit(1); // We will have to improve this later if (d<0) { this.um = -; this.de = -d; else { um = ; // same as this.um =; de = d; it k =mdc(math.abs(um), de); um /= k; de /= k; José Valete de Oliveira 14-14 7

O laçameto de excepções e o sializador throw /** @versio 2.0 */ class Fractio { private it um, de; public Fractio (it, it d) { if (d==0) throw ew ArithmeticExceptio( Attemptig to create a Fractio with a ull deomiator ); // como ates José Valete de Oliveira 14-15 A hierarquia Throwable e as excepções pré-defiidas do Java 14-16 8

E um possível cliete it, d; // try { Fractio f = ew Fractio (, d); System.out.prit(f); catch(arithmeticexceptio e) { System.err.prit(e); José Valete de Oliveira 14-17 Keywords for Java Exceptios throws Declares the (checked) exceptios which ca be raised by a method. throw Raises a exceptio to the first available hadler. try Sets the start of a block associated with a set of exceptio hadlers. catch If the block eclosed by the try geerates a exceptio of this type, cotrol moves here. fially Always called whe the try block cocludes, ad after ay ecessary catch hadler is complete. José Valete de Oliveira 14-18 9

Até agora Itrodução Testes e Testes uitários Noção de Excepção A hierarquia Throwable e as excepções pré-defiidas do Java O laçameto de excepções e o sializador throw A clausula throws O maipulador de excepções catch e os blocos try e fially Excepções defiidas pelo programador Asserções Coclusões José Valete de Oliveira 14-19 Example: cloe() as defied i Object Object {abstract +equals(aobject) #cloe() protected Object cloe() throws CloeNotSupportedExceptio José Valete de Oliveira 14-20 10

Uma classe pode adoptar 1 das seguites políticas de cloagem 1. Suporta cloagem 2. Suporta cloagem codicioalmete 3. Não suporta cloagem mas ão se importa que as suas subclasses suportem 4. Proíbe cloagem José Valete de Oliveira 14-21 Política 1. Suporta cloagem Para suportar cloagem, umaclasse: 1. declara implemetar a iterface Cloeable e 2. forece uma redefiição do método cloe() com visibilidade pública ode ão se declara o laçameto de qualquer exceção José Valete de Oliveira 14-22 11

Política 1. Suporta cloagem, exemplo /** @versio 2.0 */ class Poit implemets Cloeable { // public Object cloe() { try { retur super.cloe(); catch (CloeNotSupportedExceptio e) { // O fluxo de cotrolo uca deverá passar por aqui. // Se por acaso passar, algo de muito errado acoteceu throw ew IteralError(); José Valete de Oliveira 14-23 Poit adopta política 1, código cliete Poit p = ew Poit(1, 2); Poit q = (Poit) p.cloe(); p.setx(0); System.out.pritl(p); System.out.pritl(q) José Valete de Oliveira 14-24 12

Fractio adopta política 1 /** @versio 2.0 */ class Fractio implemets Cloeable { // public Object cloe() { try { retur super.cloe(); catch (CloeNotSupportedExceptio e) { // O fluxo uca deverá passar por aqui. // Se por acaso passar, algo de muito errado acoteceu throw ew IteralError(); José Valete de Oliveira 14-25 Poit adopta política 1 // versão simples mas ERRADA! public Object cloe() { retur ew Poit(this.x, this.y); Class Pixel exteds Poit implemets Cloeable { // // Pixel p = ew Pixel(1, 2, R, G, B); Pixel impossible = (Pixel) p.cloe(); //ERRO. POR QUÊ? José Valete de Oliveira 14-26 13

Política 2: Suporta cloagem codicioalmete Para suportar cloagem codicioal, uma classe declara implemetar a iterface Cloeable e forece uma redefiição do método cloe() com visibilidade pública ode aida se declara o laçameto da exceção CloeNotSupportedExceptio. José Valete de Oliveira 14-27 Uma implemetação de IStack adopta política 2 /** @versio */ class AStack implemets IStack, Cloeable { private Object [] elemets; //... public Object cloe() throws CloeNotSupportedExceptio { AStack ewstack = (AStack) super.cloe(); ewstack.elemets = (Object []) elemets.cloe(); retur ewstack; José Valete de Oliveira 14-28 14

Uma classe pode adoptar 1 das seguites políticas de cloagem José Valete de Oliveira 14-29 Uma classe pode adoptar 1 das seguites políticas de cloagem José Valete de Oliveira 14-30 15

try, catch, fially agai try { expressão* catch ( exceptio_type idetificador ) { expressão* * [ fially { expressão* ] José Valete de Oliveira 14-31 Fially i actio public class OOff { static boolea O=true; public static void mai(strig[] args) { try { System.out.pritl("Iside the first try"); try { if (O) throw ew Exceptio(); System.out.pritl("Iside the secod try"); fially { System.err.pritl("I fially clause"); O = false; System.out.pritl("Igored i the presece of a exceptio."); catch(exceptio e) { e.pritstacktrace(); System.out.pritl("O: " + O); José Valete de Oliveira 14-32 16

Excepções defiidas pelo utilizador class MyExceptio exteds Exceptio { José Valete de Oliveira 14-33 Example: the graphic editor, agai The task is to develop a graphic editor which is able to maita ad operate 2D geometric figures. More specifically, the editor should be able of, give a square, geerate the tagetial ier circumferece. The square will be give by 2 suitable poits defiig its diagoals. For the sake of simplicity, the sides of the square are always parallel to the axis. Obviously, 2 poits defie a square whe the distace betwee coordiates i x are equals to distaces coordiates i y. A circumferece is represeted by its ceter (a poit) ad a radius (a double) José Valete de Oliveira 14-34 17

A istace of the problem José Valete de Oliveira 14-35 A possible class diagram José Valete de Oliveira 14-36 18

Excepções defiidas pelo utilizador class GeoExceptio exteds Exceptio { public GeoExceptio() {super(); public GeoExceptio(Strig s) {super(s); José Valete de Oliveira 14-37 Excepções defiidas pelo utilizador class GeoSquareExceptio exteds GeoExceptio { private Poto A, B; public GeoSquareExceptio() {super(); public GeoSquareExceptio(Strig s) {super(s); public GeoSquareExceptio(Strig s, Poto p, Poto q) { super(s); A = p; B=q; public geta() {retur A; public getb() {retur B; José Valete de Oliveira 14-38 19

Excepções defiidas pelo utilizador /** @versio 2.0 */ class Quadrado { private Poto A, B; public Quadrado(Poto p, Poto q) throws GeoSquareExceptio { if (! validapotos(p, q) ) throw ew GeoSquareExceptio( Ivalid:, p,q); A = p; B = q; //... José Valete de Oliveira 14-39 Excepções defiidas pelo utilizador try { Quadrado umquadrado = ew Quadrado(p, q); catch (GeoSquareExceptio e) { System.err.prit(e.getA() + e +e.getb() + ão defiem um quadrado ); José Valete de Oliveira 14-40 20

Assertios assert expressio [ : expressio]; José Valete de Oliveira 14-41 Check poit Somethig is wrog here. What it is? try { /* */ catch (Exceptio e) {/* */ catch (ArrayIdexOutOfBouds ae) {/* */ José Valete de Oliveira 14-42 21

Summary Itrodução Testes e Testes uitários Noção de Excepção A hierarquia Throwable e as excepções pré-defiidas do Java O laçameto de excepções e o sializador throw A clausula throws O maipulador de excepções catch e os blocos try e fially Excepções defiidas pelo programador Asserções Coclusões José Valete de Oliveira 14-43 22