PDF de programación - 08a.- Excepciones - Programación Orientada a Objetos en C#

Imágen de pdf 08a.- Excepciones - Programación Orientada a Objetos en C#

08a.- Excepciones - Programación Orientada a Objetos en C#gráfica de visualizaciones

Publicado el 17 de Febrero del 2019
351 visualizaciones desde el 17 de Febrero del 2019
959,6 KB
24 paginas
Creado hace 1a (15/08/2018)
Programación Orientada a Objetos en C# .NET

CAPÍTULO 8
EXCEPCIONES

2

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

1

Programación Orientada a Objetos en C# .NET

Preguntas detonadoras

¿Cómo se controlan los posibles errores que

ocurran durante la ejecución de una aplicación?

Un programador, ¿puede disparar sus propias

excepciones?

¿Cómo se prepara a una aplicación para que

maneje errores?

3

¿Qué es una excepción?

Es un evento que ocurre durante la

ejecución de un programa y que
interrumpe el flujo normal de
operación

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

2

Programación Orientada a Objetos en C# .NET

Esperando lo inesperado !!

Ocurrencia de
sucesos que se
consideran
excepcionales.
Cómo manejar

situaciones anómalas

Pueden ocurrir

durante la ejecución
de un programa

Control de excepciones

Debe ser simple de usar y de entender
Debe separar el código del tratamiento

de excepciones del código normal

Implementar un tratamiento uniforme

de las excepciones

Permitir

que

las

acciones

de

recuperación sean programadas

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

3

Programación Orientada a Objetos en C# .NET

Tipos de excepciones

Implícitas.- Definidas por el lenguaje

Tipos de

excepciones

Explícitas.- Definidas por el programador

Excepciones en C#

• Todas las excepciones derivan de System.Exception

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

4

Programación Orientada a Objetos en C# .NET

El espacio de nombres
System.Exception
Incluido en la librería de clases (BCL)

OutOfMemoryException

IOException

System.Exception

NullReferenceException

Exception

Application.Exception

FormatException

ArithmeticException

DivideByZeroException

OverflowException

Algunas excepciones

Excepción

Origen (causa del error)

FormatException

El formato de un dato no corresponde con

sus especificaciones

DivideByZeroException

Cuando se intenta calcular una división por

OverflowException

cero (el denominador es cero)

Cuando una operación aritmética produce
un resultado que está fuera del intervalo de

datos permitido.

OutOfMemoryException

No hay suficiente espacio de memoria para

crear un objeto

IndexOutOfRangeException Cuando se intenta acceder a una celda de un

arreglo cuyo índice está fuera del rango

permitido

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

5

Programación Orientada a Objetos en C# .NET

Introducción al manejo de
excepciones

• Excepción

• Manejador de excepción

• Levantamiento de una

excepción

Manejo de excepciones en C#

C# envía una excepción cuando ocurre un error en el
programa y detiene su ejecución.

Si se desea que la aplicación siga ejecutándose después del
error, entonces se usa:

try para poner en alerta al programa sobre el código que
puede lanzar una excepción.

catch para capturar y manejar cada excepción que se lance.

finally código que se ejecutará haya o no excepciones.

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

6

Programación Orientada a Objetos en C# .NET

Manejo de excepciones en C# (cont.)

try
{

}

catch
{

}

[Bloque de código que puede causar errores]

[Qué hacer si sucede un error]

finally
{

[De cualquier manera, hacer lo siguiente…]

}

No deben declararse variables dentro de un bloque de

sentencias try, ya que serían consideradas locales y

únicamente dicho bloque podría utilizarlas

¿Qué hacer después de manejar la
excepción?

Cuando el manejador termina se pueden
hacer dos cosas:

Reanudar la ejecución del bloque
Terminar la ejecución del bloque y

devolver el control al punto de invocación.

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

7

Programación Orientada a Objetos en C# .NET

Tratamiento de excepciones

Tratamiento de excepciones

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

8

Programación Orientada a Objetos en C# .NET

Ejemplo sin manejo de excepciones

static void Main(string[] args)

{

}

int a = 5, b = 0, c;

c = a / b;

Intenta ejecutar una

división por cero

(b = 0)

Console.Write("c=" + a+"/"+b+"="+c);
Console.ReadKey();

EJEMPLO SIN MANEJO DE

EXCEPCIONES

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

9

Programación Orientada a Objetos en C# .NET

DivideByZeroException

static void Main(string[] args)

int a = 5, b = 0, c;

try
{

c = a / b;

Intenta ejecutar una

división por cero

(b = 0)

Captura la excepción
DivideByZeroException

{

}

}
catch (DivideByZeroException x)
{

Console.WriteLine(x.Message);
Console.ReadKey();
return;

}

Propiedad con el

mensaje de la

excepción

Console.Write("c=" + a+"/"+b+"="+c);
Console.ReadKey();

Mensajes de excepciones

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

10

Programación Orientada a Objetos en C# .NET

Ejemplo con manejo de
excepciones

Ejemplo de división por cero

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

11

Programación Orientada a Objetos en C# .NET

Codificación del botón para hacer
la división

private void button1_Click(object sender, EventArgs e)
{

int dividendo=0, divisor=0, resultado=0;
try
{

dividendo = int.Parse(textBox1.Text);
divisor = int.Parse(textBox2.Text);
resultado = dividendo / divisor;

}
catch (Exception x)
{

Captura cualquier

excepción que se dispare

MessageBox.Show("ERROR: "+x.Message);

}
finally
{

textBox3.Text = resultado.ToString();

}

}

Propiedad con el

mensaje de la

excepción

Otro ejemplo para validar la
captura de datos

int a=0;
bool Bandera = true;
do
{

Bandera = false;
try
{

Captura cualquier

excepción que se dispare

Console.Write("Capture un número entero: ");
a = int.Parse(Console.ReadLine());

}
catch (Exception x)
{

Propiedad con el

mensaje de la

excepción

Console.WriteLine("ERROR: " + x.Message);
Console.ReadKey();
Bandera = true;

}

} while (Bandera);

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

12

Programación Orientada a Objetos en C# .NET

Ejemplo con try-catch

public static void Main(string[] args)

{

}

int dato1 = 0, dato2 = 0, dato3;
System.Console.WriteLine(“Se inicia la aplicacion”);
try

{

}

dato1++;
dato3 = dato1 / dato2;
dato2++;

catch (System.DivideByZeroException e) {

CATCH atrapará

solamente

excepciones de

tipo

DIVIDEBYZERO

EXCEPTION

Console.WriteLine(“Error: ” + e.Message);
dato3 = dato1;
}

//Otras sentencias

Console.WriteLine(dato1 + “ ” + dato2 + “ ” + dato3);

OverflowException

Por defecto, NO se verifica el desborde aritmético

checked {

int number = int.MaxValue;
Console.WriteLine(++number);

}

OverflowException

Dispara una excepción
No se ejecuta la impresión.

unchecked {

int number = int.MaxValue;
Console.WriteLine(++number);

¿ MaxValue + 1 es negativo?

}

-2147483648

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

13

Programación Orientada a Objetos en C# .NET

Ejemplo sin verificación

static void Main(string[] args)
{

int x = int.MaxValue;

Console.WriteLine("x=" + x);
// 2, 147, 483, 647

x++;

Console.WriteLine("x=" + x);
// -2, 147, 483, 648 ??????

}

ERROR:
No verifica

OverflowException !!!

Ejemplo con verificación

static void Main(string[] args)
{

int x = int.MaxValue;
Console.WriteLine("x=" + x);
// 2, 147, 483, 647
try
{

checked
{

x++;

}

}
catch(OverflowException)
{

Solución:
Verificar

OverflowException

Console.Write(“Número demasiado grande !!!”);
return;

}

}

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

14

Programación Orientada a Objetos en C# .NET

Tipos de excepciones

Excepciones de sistema:

Cuando se realiza alguna operación no válida se lanza
automáticamente.

Acceso a algún objeto que no existe, división por
cero…

Excepciones de programador:

Se define una clase que herede de Throwable o de
Exception.

Excepciones de usuario:

Gestiona la excepción mediante los bloques de código try,
catch, finally.
Indica que el código producirá una excepción que no se
tratará dentro de él y se pasará al método superior
utilizando throw.

La sentencia throw

• La instrucción throw se utiliza para señalizar la
aparición de una situación anómala (excepción)
durante la ejecución del programa.

• Se puede utilizar una instrucción throw en el
bloque catch para volver a producir la excepción, la
cual ha sido capturada por la instrucción catch.

• El programador puede disparar una excepción

mediante:
• throw new Exception(“Error: …….”);

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

15

Programación Orientada a Objetos en C# .NET

Ejemplo de la sentencia throw

static void Main(string[] args)
{

int a=3, b=0, c=0;

try
{

c = CalcularDivision(a, b);

}
catch (Exception x)
{

Console.WriteLine(x.Message);

}
finally
{

Console.WriteLine(a+"/"+b+"="+c);

}
Console.ReadKey();

}

Ejemplo de la sentencia throw

static int CalcularDivision(int numerador, int denominador)
{

if (denominador == 0)

throw new Exception("El denominador NO debe ser cero");

else

return (numerador / denominador);

}

Ing. Bruno López Takeyas, M.C.
http://www.itnuevolaredo.edu.mx/Takeyas

16

Programación Orientada a Objetos en C# .NET

Ejemplo 1: Excepción general

static void Main( )
{

try

{ System.Console.WriteLine(" Introduce un número: ");
int a = System.Convert.ToInt32
(System.Console.ReadLine() );
}

catch ( Exception e )

{ System.Console.WriteLine(" Ha habido un error..." +
e.Message);
}

finally

{ System.Console.WriteLine(" Con error y Sin error, este
mensaje aparece. ");
System.Console.ReadLine();
}

}

Ejemplo 2: Disparar una excepción
mediante la sentencia throw

using System;

class MainClass {

static void ProcesarCad
  • Links de descarga
http://lwp-l.com/pdf15260

Comentarios de: 08a.- Excepciones - Programación Orientada a Objetos en C# (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad