PDF de programación - Excepciones

Imágen de pdf Excepciones

Excepcionesgráfica de visualizaciones

Publicado el 29 de Julio del 2019
489 visualizaciones desde el 29 de Julio del 2019
313,8 KB
4 paginas
Creado hace 7a (28/04/2016)
Excepciones

1/7

Excepciones

A menudo, en los programas se producen situaciones
excepcionales o inesperadas.

Esto es frecuente en la entrada/salida: el programa pide un

entero y el usuario introduce una cadena de texto que no
representa un entero



// lee de teclado un entero del
// repite la peticion si el entero no está en ese rango
static int pideEntero(string texto, int min, int max){

intervalo [min,max]

int dato = −1;
while (dato<min || dato>max){

Console.Write ("{0} [{1},{2}]: ", texto, min, max);
dato = int.Parse (Console.ReadLine ());

};
return dato;

}

2/7

Si [min, max] = [0, 100] y ponemos -4, solicita de nuevo el dato
Y si introducimos la cadena doce?





Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Si escribimos doce int.Parse("doce") produce un error.

Unhandled Exception:
System.FormatException: Input string was not in a correct format.

at System.Number.StringToNumber (System.String str, NumberStyles options, ...
at System.Number.ParseInt32 (System.String s, NumberStyles style, ...
at System.Int32.Parse (System.String s) ...
at excepciones.MainClass.pideEntero (System.String texto, ...
at excepciones.MainClass.Main () [0x0000c] in .../excepciones/Program.cs:13

[ERROR] FATAL UNHANDLED EXCEPTION: System.FormatException: Input string was not in a correct format.

int.Parse no sabe cómo convertir el string "doce" al tipo
int lanza una excepción, i.e., informa de que ha ocurrido

una circunstancia excepcional.

... y además el programa termina abruptamente

... pero las excepciones pueden capturarse y retomar el control
de la situación

3/7

La construcción try-catch

Rehacemos el código:
static int pideEntero2(string texto, int min, int max){

int dato = −1;
while (dato<min || dato>max){

Console.Write ("{0} [{1},{2}]: ", texto, min, max);
try { // intentamos la conversion

dato = int.Parse (Console.ReadLine ());

}
catch { // si algo no va bien

Console.WriteLine("Debes introducir un valor entero");



}

}

}
return dato;





Esto se denomina a veces control dinámico de errores y está
relacionado con la programación defensiva.

4/7

Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM En el bloques try se pueden escribir tantas instrucciones

como se quiera: se capturará cualquier excepción producida
por ellas en.

En el bloque catch también pueden escribirse tantas
instrucciones como se desee y se ejecutarán en caso de
excepción.

Se pueden anidar los try-catch



try
{

{ ... }

try
{
// Las excepciones de este bloque se capturan el catch externo

// Las excepciones de este bloque se capturan el catch interno

}
catch // excepciones internas
{ ... }
// Las excepciones de este bloque se capturan el catch externo

}
catch // excepciones externas

5/7

Refinando el catch

El catch puede capturar el tipo de excepción que se produce (en
realidad una excepción es un o objeto de la clase Exception).
Esto permite obtener más información sobre la excepción

(sin detener el programa)



static int pideEntero3(string texto, int min, int max){

int dato = −1;
while (dato<min || dato>max){

Console.Write ("{0} [{1},{2}]: ", texto, min, max);
try {

dato = int.Parse (Console.ReadLine ());

}
catch (Exception e){

Console.WriteLine (e);
Console.WriteLine("Debes introducir un valor entero");

}

}
return dato;

}

6/7









Jaime Sánchez. Sistemas Informáticos y Computación, UCMJaime Sánchez. Sistemas Informáticos y Computación, UCM Creando nuestras propias excepciones




El programador también puede lanzar excepciones de la forma:

throw new Exception("Algo va muy mal");




Esta excepción puede capturarse y manejarse como las
anteriores con try-catch.

Las excepciones deben utilizarse en situaciones críticas,

cuando el programa no puede continuar normalmente: no
deben lanzarse en situaciones que puedan solucionarse
fácilmente pidiendo otro valor o dando un simple mensaje
de error.

7/7

Jaime Sánchez. Sistemas Informáticos y Computación, UCM
  • Links de descarga
http://lwp-l.com/pdf16389

Comentarios de: Excepciones (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad