You are on page 1of 23

ProgramacinOrientadaaObjetos

Ing.JosCastaedaSaldaa

AGENDA
Quesunaexcepcin Criteriosdeusodeexcepciones JerarquadeexcepcionesenJava(checked and

unchecked) Elbloquefinally Creandoexcepciones

Excepcin
Eltrminoexcepcin(delinglsexception)es unaabreviaturaparalafraseevento excepcional. Definicin:unaexcepcinesuneventoque ocurredurantelaejecucindeunprograma, queperturbaelflujonormaldelas instruccionesdeunprograma.

CreacinyManejodeuna Excepcin
Cuandounerrorocurredentro deunmtodo,elmtodocrea unobjetoyselopasaalsistema entiempodeejecucin.El objeto,llamadoexcepcin, contieneinformacinacercadel error,incluidosutipoyelestado delprogramacuandoelerror ocurri.Lacreacindeuna objetoexcepcinyelpasodel mismoalsistemaentiempode ejecucinesllamadolanzar (throwing)unaexcepcin.
Mtododonde ocurreelerror Llamadoal mtodo Mtodosin manejadordeexcep. Llamadoal mtodo Mtodocon manejadordeexcep. Llamadoal mtodo main

Piladellamados

CapturadeExcepcionesenJava
public class PruebaEmpleado{ private int calcularBonificacion(){ try{ Bloquedecdigoquepuedegenerarunaexcepcin }catch(TipoExcepcion ex){ Bloquedecdigodemanejodelaexcepcin } }

AGENDA
Quesunaexcepcin Criteriosdeusoexcepciones JerarquadeexcepcionesenJava Elbloquefinally Creandoexcepciones

CuandoUsarunaExcepcin
Elmanejodeexcepcionesestadiseadoparaprocesar erroressincronizados,queocurrencuandouna sentenciaesejecutaada.Ejemploscomunesdeestecaso son:indices dearreglosfueradelmites,sobrecarga aritmtica(ej.Valoresfueradelrangode representacin),divisionesporcero,parmetrosde mtodosincorrectos,ubicacindememoria insatisfactoria.

CuandonoUsarExcepciones
Elmanejodeexcepcionesnoestadiseadoparaprocesar problemasasociadosconeventosasncronos(ej. Completarlalecturaoescrituradedisco,recepcinde mensajesdered,clicks delmouseopresindeteclas), queocurreninparalelocon,eindependientementede, elcontroldeflujodelprograma.

AGENDA
Quesunaexcepcin Cuandousarexcepciones JerarquadeexcepcionesenJava Elbloquefinally Creandoexcepciones

JerarquadeExcepciones

TipodeExcepciones(1/2)
Checked Exceptions:Estassonexcepcionesque

unaaplicacinbienescritadebeanticiparydela cualsedeberecuperar. LasChecked exceptions estnsujetasaser capturadas(catch). Todaslasexcepcionessonchecked exceptions, exceptoaquellasindicadasporError, RuntimeException ysussubclases.

TipodeExcepciones(2/2)
Unchecked Exceptions:Estasexcepcionessedividenen:
Error:Estassoncondicionesexcepcionalesqueson

externasalaaplicacin,yquelaaplicacinusualmente nopuedeanticiparydelacualnosepuederecuperar. Runtime:Estassoncondicionesexcepcionalesqueson internasalaaplicacin,yquelaaplicacinusualmente nopuedeanticiparydelacualnosepuederecuperar.

AGENDA
Quesunaexcepcin Cuandousarexcepciones JerarquadeexcepcionesenJava Elbloquefinally Creandoexcepciones

Usodefinally
public class PruebaEmpleado{ private int calcularBonificacion(){ try{ Bloquedecdigoquepuedegenerarunaexcepcin }catch(TipoExcepcion ex){ Bloquedecdigodemanejodelaexcepcin } finally{ Bloquedecdigo(ej.Cdigodelimpieza) } }

ElBloquefinally
Elbloquefinally siempreseejecutacuandoexisteel bloquetry.Estoaseguraqueelbloqueseejecuteansi unaexcepcininesperadaocurre.Perofinally estilno sloparaelmanejodeexcepciones permiteal programadorevitartenercdigodelimpiezaque accidentalmenteesignoradoporunreturn,continue,o break.Poniendoelcdigodelimpiezaenelbloque finally essiempreunabuenaprctica,ancuandouna excepcinnoesanticipada.

AGENDA
Quesunaexcepcin Cuandousarexcepciones JerarquadeexcepcionesenJava Elbloquefinally Creandoexcepciones

CuandoCrearExcepciones?
Sedeberacrearclasesexcepcion siseresponde afirmativamenteaunadelassiguientespreguntas;deotra formaprobablementesepuedeusarexcepcionescreadaspor terceros: Necesitasunaexcepcinquenoestarepresentadaenla plataformaJava?. Ayudaraalosusuariossiellospuedendiferenciartus excepcionesdelaslanzadasporotros? Lanzatucdigomsdeunaexcepcinrelacionada? Siusaslaexcepcion dealguienms,tendrnlosusuarios accesoaesasexcepciones?

EjemplodeCreacindeExcepciones (1/3)
Suponiendoqueseestaescribiendounaclaselinked list. Laclasesoportaentreotroslossiguientesmtodos: objetoEn(int n) Retornaelobjetoenlaposicinn. lanzaunaexcepcinsielargumentoesmenoraceroo mayorqueelnmerodeobjetosdelalista primerObjeto() Retornaelprimerobjetoenlalista. Lanzaunaexcepcinsilalistanocontieneobjetos. indiceDe(Objeto o) Busca enlalista elobjeto oy retorna su posicin.Lanza una excepcin si elobjeto pasado almtodo noesta enlalista.

EjemplodeCreacindeExcepciones (2/3)
LinkedListException

IndiceInvalido Exception

ObjetoNoEncontradoException

ListaVaciaException

PosibleJerarquadeClasesdeExcepcin

EjemplodeCreacindeExcepciones (3/3)
EscogiendounaSuperclaseparalaJerarqua CualquiersubclasedeException puedeserusadacomo laclasepadredeLinkedListException.Porotrolado, unrpidoexamendeesassubclasesmuestranque ellassoninapropiadasyaquesonmuyespecializadaso completamentenorelacionadasal LinkedListException.Porloquelaclasepadrede LinkedListException deberaserException.

EjerciciodeManejodeExcepciones
Acontinuacinpruebeelcdigodela siguientediapositivaingresandodiversos tiposdevaloresincluidoselcerocomo denominadoryvaloresnonmericos.

EjerciciodeManejodeExcepciones
Considerelaejecucindelsiguienteprograma: import java.io.*; public class DivisionPorCero { public static void main(String args[])throws IOException { BufferedReader br=newBufferedReader(newInputStreamReader(System.in)); int numerador,denominador,resultado; System.out.print("Ingreseelvalordelnumerador:"); numerador=Integer.parseInt(br.readLine()); System.out.print("Ingreseelvalordeldenominador:"); denominador=Integer.parseInt(br.readLine()); resultado=obtenerCociente(numerador,denominador); System.out.println("Resultado:"+numerador+"/"+denominador+"="+resultado); } public static int obtenerCociente(int numerador,int denominador){ return numerador/denominador; } }

Referencias
ComoProgramarenJava,Deitel &Deitel 7ma edicin The Really BigIndex,

http://download.oracle.com/javase/tutorial/collection s/intro/index.html

You might also like