3. MANEJO DE EXCEPCIONES
¿Por qué se emplean excepciones?
En ocasiones, cuando se ejecuta una porción de código no
existen 100% de seguridad de que el mismo terminará
satisfactoriamente y se hace imperioso capturar la
excepción o error arrojado para evitar cierta inestabilidad
en la aplicación. Sintaxis:
try
try
{{
‘El código que puede producir el error
‘El código que puede producir el error
}catch ([filtros opcionales o tipos de errores a capturar])
}catch ([filtros opcionales o tipos de errores a capturar])
{{
‘Código para cuando se produzca un error
‘Código para cuando se produzca un error
[bloques catch adicionales]
[bloques catch adicionales]
}}
Finally
Finally
{{
‘Código se ejecuta siempre aunque suceda o no un error
‘Código se ejecuta siempre aunque suceda o no un error
}}
5. Atributos de la Clase Exception
Atributo Descripción
Message Es el atributo más utilizado y contiene un string con la descripción del error
Source Este atributo contiene un string que indica el objeto o aplicación que causo el error.
StackTrace Este atributo es un string que contiene la pila de llamadas (call stack) desde el punto
donde se originó el error.
TargetSite Este atributo es un string que contiene el nombre del método desde donde se generó la
excepción.
InnerException Esta propiedad es un miembro de tipo Exception que puede ser utilizada para contener
una excepción adicional
HelpLink Esta propiedad es un string que puede ser utilizada para almacenar información
adicional del error que se ha generado.
Data Esta propiedad es de tipo object y permite almacenar información adicional acerca del
error.
7. LANZAMIENTO DE EXCEPCIONES
Introducción
C# incluye la instrucción throw, que
permiten a los programadores lanzar
excepciones cuando sea necesario y
controlarlas convenientemente.
Cuando necesita lanzar una excepción, el
runtime ejecuta una instrucción throw y
lanza una excepción definida por el sistema.
8. La instrucción throw
Lanza una excepción apropiada
Asigna a la excepción un mensaje
significativo
throw expression ;
throw expression ;
(m i n u t o < 1 | | m i n u t o > = 6 0 ) {
minuto < 1 || minuto >= 60) {
hr o w n e w I n v a l i d T i m e E x c e p t i o n ( m i n u t o
row new InvalidTimeException(minuto +
+
" no es un
" no es un minuto válid
minuto válid
/ !! Not alcanzado !!
!! Not alcanzado !!
9. Normas para el tratamiento de
excepciones
Lanzamiento
Evitar excepciones para casos normales o esperados
Nunca crear ni lanzar objetos de clase Exception
Incluir una cadena de descripción en un objeto
Exception
Lanzar objetos de la clase más específica posible
Captura
Ordenar los bloques catch de lo específico a lo general
No permitir que salgan excepciones de Main
10. Proyecto
Desarrollar una calculadora científica
con las siguientes funcionalidades:
Operaciones básicas: Suma, resta, multiplicación,
división, potenciación y modulo.
Calcular el factorial.
Calculo de la raíz cuadrado.
Calcular cuantos dígitos tiene un número y la suma de
sus dígitos.
Calculo de potenciación. Ej. 2 elevado a las 3= 8 y 2
elevado a la 2 = 4.
Evaluar si un número es : Primo, Perfecto, Par o
impar, Negativo o positivo y
Verificar si el numero esta dentro de la serie fibonacci.
11. Cont…
Cada operación debe ser una opción en el menú principal
de la calculadora (utilizar enum y switch). Un ejemplo del
menú principal seria:
Digite la opción que quiere utilizar: (La opción sería un número del
teclado)
Opción 1: Sumar
Opción 2: Resta
Opción 3: División
Notas:
Validación de los datos de entrada: No puede permitir entrada de
caracteres, puede digitar números reales, es decir, con decimales.
Manejo de excepciones.
Todas las funcionalidades deben desarrollarse sin utilizar
funciones matemáticas del lenguaje, por ejemplo: el factorial