tratamento de exceções - instituto de computação …leomurta/courses/poo/aula9.pdfincapacidade...

11
Tratamento de Exceções Leonardo Gresta Paulino Murta [email protected]ff.br

Upload: others

Post on 13-Aug-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

TratamentodeExceções

[email protected]

Page 2: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

Auladehoje•  Estudaremosformasdetratamentodeexceções

–  try...catch...finally

Leonardo Murta Tratamento de Exceções 2

Page 3: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

3

Exceções•  Conceito

–  Exceçõesrepresentamsituaçõesdeerrotratáveis,ocorridasduranteaexecuçãodeumprograma

–  Exemplosdeexceçõessãodivisãoporzeroouincapacidadedelerdadosdeumarquivo

•  Geradoresdeexceções–  InterpretadorJava:quandopercebeumasituaçãodeerropadrão(divisãoporzero,falhadesegurança,…)

– Métodosdoprograma:quandopercebeumasituaçãodeerrointernadoprograma(informaçãoinválida,…)

Leonardo Murta Tratamento de Exceções

Page 4: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

HierarquiadeExceção

Leonardo Murta Tratamento de Exceções 4

Ver mais em: https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html

Nãodevemostratar

Devemostratar

Page 5: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

TiposdeExceção•  DescriçãodealgunsUposdeexceções:

–  Error:errogenérico(nãodevemostratar)–  ExcepUon:exceçãogenérica(devemostratarsuassubclasses)–  RunUmeExcepUon:exceçãodetectadaemtempodeexecução–nãoéindicadapelaIDEduranteacompilação

–  IOExcepUon:errosdeentradaesaída–  ArithmeUcExcepUon:errodecálculoalgébrico(ex.:divisãoporzero)–  NullPointerExcepUon:errodeacessoavariávelnula–  SQLExcepUon:errodeacessoabancodedados

•  DiversosmétodosdasbibliotecasJavageramexceções–  EstasexceçõesdevemsertratadaspelasclassesqueuUlizemasclassesdasbibliotecas

Leonardo Murta Tratamento de Exceções 5

Page 6: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

6

TratamentodeExceções•  Apalavrareservadathrows,seguidapelaclassedeexceção

gerada,deveserindicadanocabeçalhodeummétodoquegereumaexceção

•  Oscomandostry-catch-finallyexecutamumcódigoquepodegerarexceçõesdemaneirasegura,realizandootratamentodasexceções

public int gravaRegistro () throws IOException { … // Código que gera a exceção

}

Leonardo Murta Tratamento de Exceções

Page 7: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

TratamentodeExceçõestry {

// Código que pode disparar exceções } catch (Excecao1 e) {

// Código executado caso o código no bloco try // dispare uma exceção tipo Excecao1

} ... catch (ExcecaoN e) {

// Código executado caso o código no bloco try // dispare uma exceção tipo ExcecaoN

} finally { // Código executado sempre, mesmo que tenha ocorrido // uma exceção no bloco try

}

Leonardo Murta Tratamento de Exceções 7

Page 8: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

TratamentodeExceções•  Aocorrênciadeumaexceçãotransfereofluxodeexecuçãoparaoprimeirocatchquetrateaexceção

•  Apósotratamentodaexceçãonocatch,ofluxoétransferidoparaofinallydomesmogrupotry-catch-finally

•  Ofinallyéexecutadosempre,tendoounãoexceção,sendoúUlparafechararquivo,transação,etc.

Leonardo Murta Tratamento de Exceções 8

Page 9: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

9

PropagaçãodeExceções

openConnection() throws IOException{ openSocket(); sendRequest(); receiveResponse(); }

getContent() { try { openConnection(); readData(); } catch (IOException e) { // Trata erro de E/S } ... }

sendRequest() throws IOException{ write(header); write(body); // Write Error! }

Leonardo Murta Tratamento de Exceções

Page 10: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

Exercício•  Emquaissituaçõesoprogramadacalculadorapodelançarexceções?– Casoousuárioentrecomvalornãonumérico– Casoousuárioentrecomzeronocasodadivisão

•  Testeasduassituações•  Reescrevaoprogramafazendousodetratamentodeexceçãoparacadaumadessassituações

Leonardo Murta Tratamento de Exceções 10

Page 11: Tratamento de Exceções - Instituto de Computação …leomurta/courses/poo/aula9.pdfincapacidade de ler dados de um arquivo • Geradores de exceções – Interpretador Java: quando

TratamentodeExceções

[email protected]