Академический Документы
Профессиональный Документы
Культура Документы
Deteccin de errores
Ejemplo 1
Un caso de divisin por cero:
Excepcin
Stack mtodos
mtodo n
mtodo 2
mtodo 1
JVM
...
return x/y;
...
...
par.divide();
...
divide
main
Clase de excepcin:
(y = 0)
java.lang.ArithmeticException
Informacin:
/ by zero (divisin por cero)
llamado por
La jerarqua de excepciones
Object
Throwable
Error
Exception
Excepcin
RuntimeException
Stack
mtodos
divide
main
JVM
Ejemplo:
Nombre
excepcin
10
Formato general:
El tipo de excepcin
(Tipo_Excepcin1,
Tipo_Excepcin2, etc.)
representa la clase de
excepcin que se puede
generar en el bloque try
que interesa capturar y
controlar.
Al producirse una
excepcin slo uno de
los bloques catch ser
ejecutado
try {
}
}
}
catch (Tipo_excepci
Tipo_excepcin1 nombre_variable){
nombre_variable){
// instrucciones a ejecutar si se produce
// una excepcin tipo 1
catch (Tipo_excepci
Tipo_excepcin2 nombre_variable){
nombre_variable){
// instrucciones a ejecutar si se produce
// una excepcin tipo 2
catch (Tipo_excepci
Tipo_excepcinN nombre_variable){
nombre_variable){
// instrucciones a ejecutar si se produce
// una excepcin tipo N
finally{
finally{
// instrucciones a ejecutar siempre
12
import java.io.* ;
public class Factorial {
public static void main( String arg[ ] ){
int nmero=0, i=1, fact=1;
BufferedReader lector = new BufferedReader( new InputStreamReader( System.in ) );
String ingresado=null;
System.out.println( "Ingrese nmero para clculo de factorial: " );
try {
ingresado = lector.readLine( );
nmero = Integer.parseInt( ingresado );
while( i <= nmero ) {
fact = fact * i;
i++;
System.out.println( "El factorial de " + nmero + " es " + fact );
}
} catch( IOException e ) {
System.out.println( "Error de input." );
}
} // Fin mtodo main
} // Fin clase
En este caso la
excepcin es
interceptada en el
mtodo divide
Nota: en el ejemplo es
discutible la decisin de
retornar esta constante en
caso de error en la divisin
13
14
Qu ocurre?
} catch (Tipo_excepci
Tipo_excepcin nombre_variable){
nombre_variable){
nombre_variable.printStackTrace
nombre_variable.printStackTrace()
.printStackTrace();
();
}
15
16
El objeto excepcin es
referenciado al interior
del bloque catch por
medio de la variable e
Se invoca el mtodo
printStackTrace
sobre el objeto excepcin
17
La clase RuntimeException
18
NullPointerException
19
20
21
22
23
Ejercicio
25
Discusin
Considere los siguientes ejemplos:
Una clase CuentaCorriente (que maneja una
cuenta bancaria) no debe admitir giros mayores que
el saldo disponible. En caso de ser inadmisible el
giro, ste podra ser impedido:
Retornado false en el mtodo que efecta el giro.
Generando una excepcin en el mtodo que efecta el
giro.
27
26