Instrucciones y excepciones
<ul><li>Descrición General </li></ul><ul><li>Introducción a las instrucciones </li></ul><ul><li>Uso de instrucciones condi...
<ul><li>Introducción a las instrucciones </li></ul><ul><li>Bloques de instrucciones </li></ul><ul><li>Tipos de instruccion...
Bloques de instrucciones <ul><li>Se usan llaves para delimitar bloques </li></ul>{ // code } { int i; ... { int i; ... } }...
Tipos de instrucciones  Instrucciones Condicionales Las instrucciones if y switch Instrucciones de iteración Las instrucci...
<ul><li>Uso de instrucciones condicionales </li></ul><ul><li>La instrucción if </li></ul><ul><li>Instrucción if en cascada...
La instrucción if <ul><li>Sintaxis: </li></ul><ul><li>No hay conversión implicita de int a bool   </li></ul>int x; ... if ...
Instrucciones if en cascada enum Palo { Treboles, Corazones, Diamantes, Picas} Palo cartas = Palo.Corazones;  if (cartas =...
La instrucción switch <ul><li>Las instrucciones switch se usan en bloques de varios casos </li></ul><ul><li>Se usan instru...
<ul><li>Uso de instrucciones iterativas </li></ul><ul><li>La instrucción while </li></ul><ul><li>La instrucción do </li></...
La instrucción while <ul><li>Ejecuta instrucciones en función de un valor booleano </li></ul><ul><li>Evalúa la expresión b...
La instrucción do <ul><li>Ejecuta instrucciones en función de un valor booleano </li></ul><ul><li>Evalúa la expresión bool...
La instrucción for <ul><li>La información de actualización está al principio del bucle </li></ul><ul><li>Las variables de ...
La instrucción foreach <ul><li>Elige el tipo y el nombre de la variable de iteración </li></ul><ul><li>Ejecuta instruccion...
<ul><li>Uso de instrucciones de salto </li></ul><ul><li>La instrucción goto </li></ul><ul><li>Las instrucciones break y co...
La instrucción goto <ul><li>Transfiere el flujo de control a una instrucción con etiqueta </li></ul><ul><li>Pueden dar lug...
Las instrucciones break and continue <ul><li>La instrucción break salta fuera de una iteración </li></ul><ul><li>La instru...
<ul><li>Tratamiento de excepciones básicas </li></ul><ul><li>¿Por qué se emplean excepciones? </li></ul><ul><li>Objetos ex...
¿Por qué se emplean excepciones? <ul><li>El tradicional tratamiento procedural de errores es demasiado complicado </li></u...
Obejetos Excepción Exception SystemException OutOfMemoryException IOException NullReferenceException ApplicationException
Uso de bloques try-catch <ul><li>Solución orientada a objetos para el tratamiento de errores </li></ul><ul><ul><li>Poner e...
Bloques catch múltiples <ul><li>Cada bloque catch captura una clase de excepcion </li></ul><ul><li>Un bloque try puede ten...
<ul><li>Lanzamiento de excepciones </li></ul><ul><li>La instrucción throw </li></ul><ul><li>La cláusula finally </li></ul>...
La instrucción throw <ul><li>Lanza una excepción apropiada </li></ul><ul><li>Asigna a la excepción un mensaje significativ...
La cláusula finally <ul><li>Las instrucciones de un bloque finally se ejecutan </li></ul>Monitor.Enter(x); try { ... } fin...
Comprobación de desbordamiento aritmético <ul><li>Por defecto, el desbordamiento aritmético no se comprueba </li></ul><ul>...
Normas para el tratamiento de excepciones <ul><li>Lanzamiento </li></ul><ul><ul><li>Evitar excepciones para casos normales...
Práctica – Compartición y seguridad de los recursos de red
Upcoming SlideShare
Loading in...5
×

4. Instrucciones Y Excepciones

4,027

Published on

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,027
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
52
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

4. Instrucciones Y Excepciones

  1. 1. Instrucciones y excepciones
  2. 2. <ul><li>Descrición General </li></ul><ul><li>Introducción a las instrucciones </li></ul><ul><li>Uso de instrucciones condicionales </li></ul><ul><li>Use instrucciones iterativas </li></ul><ul><li>Uso de instrucciones de salto </li></ul><ul><li>Tratamiento de excepciones básicas </li></ul><ul><li>Lanzamiento de excepciones </li></ul>
  3. 3. <ul><li>Introducción a las instrucciones </li></ul><ul><li>Bloques de instrucciones </li></ul><ul><li>Tipos de instrucciones </li></ul>
  4. 4. Bloques de instrucciones <ul><li>Se usan llaves para delimitar bloques </li></ul>{ // code } { int i; ... { int i; ... } } { int i; ... } ... { int i; ... } <ul><li>Un bloque y su bloque padre o pueden tener una variable con el mismo nombre </li></ul><ul><li>Bloques hermanos pueden tener variables con el mismo nombre </li></ul>
  5. 5. Tipos de instrucciones Instrucciones Condicionales Las instrucciones if y switch Instrucciones de iteración Las instrucciones while, do, for, y foreach Instrucciones de salto Las instrucciones goto, break, y continue
  6. 6. <ul><li>Uso de instrucciones condicionales </li></ul><ul><li>La instrucción if </li></ul><ul><li>Instrucción if en cascada </li></ul><ul><li>La instrucción switch </li></ul><ul><li>Problema: ¿Dónde está el error? </li></ul>
  7. 7. La instrucción if <ul><li>Sintaxis: </li></ul><ul><li>No hay conversión implicita de int a bool </li></ul>int x; ... if (x) ... // Debe ser if (x != 0) en C# if (x = 0) ... // Debe ser if (x == 0) en C#   if ( expresión-booleana ) primera-instrucción-incrustada else segunda -instrucción-incrustada
  8. 8. Instrucciones if en cascada enum Palo { Treboles, Corazones, Diamantes, Picas} Palo cartas = Palo.Corazones; if (cartas == Palo.Treboles) color = “Negro”; else if (cartas == Palo.Corazones) color = “Rojo&quot;; else if (palo == Palo.Diamantes) color = &quot;Rojo&quot;; else color = “Negro&quot;;
  9. 9. La instrucción switch <ul><li>Las instrucciones switch se usan en bloques de varios casos </li></ul><ul><li>Se usan instrucciones break para evitar caídas en cascada (fall through) </li></ul>switch (palo) { case Palo.Treboles : case Palo.Picas : color = &quot;Negro&quot;; break; case Palo.Corazones : case Palo.Diamantes : color = &quot;Rojo&quot;; break; default: color = &quot;ERROR&quot;; break; }
  10. 10. <ul><li>Uso de instrucciones iterativas </li></ul><ul><li>La instrucción while </li></ul><ul><li>La instrucción do </li></ul><ul><li>La instrucción for </li></ul><ul><li>La instrucción foreach </li></ul><ul><li>Problema: ¿Dónde está el error? </li></ul>
  11. 11. La instrucción while <ul><li>Ejecuta instrucciones en función de un valor booleano </li></ul><ul><li>Evalúa la expresión booleana al principio del bucle </li></ul><ul><li>Ejecuta las instrucciones mientras el valor booleano sea True </li></ul>int i = 0; while (i < 10) { Console.WriteLine(i); i++; } 0 1 2 3 4 5 6 7 8 9
  12. 12. La instrucción do <ul><li>Ejecuta instrucciones en función de un valor booleano </li></ul><ul><li>Evalúa la expresión booleana al final del bucle </li></ul><ul><li>Ejecuta las instrucciones mientras el valor booleano sea True </li></ul>int i = 0; do { Console.WriteLine(i); i++; } while (i < 10); 0 1 2 3 4 5 6 7 8 9
  13. 13. La instrucción for <ul><li>La información de actualización está al principio del bucle </li></ul><ul><li>Las variables de un bloque for sólo son válidas en el bloque </li></ul><ul><li>Un bucle for puede iterar varios valores </li></ul>for (int i = 0; i < 10; i++) { Console.WriteLine(i); } 0 1 2 3 4 5 6 7 8 9 for (int i = 0; i < 10; i++) Console.WriteLine(i); Console.WriteLine(i); // Error: i está fuera de ámbito for (int i = 0, j = 0; ... ; i++, j++)
  14. 14. La instrucción foreach <ul><li>Elige el tipo y el nombre de la variable de iteración </li></ul><ul><li>Ejecuta instrucciones incrustadas para cada elemento de la clase collection </li></ul>ArrayList numeros = new ArrayList( ); for (int i = 0; i < 10; i++ ) { numeros.Add(i); } foreach (int number in numeros) { Console.WriteLine(numero); } 0 1 2 3 4 5 6 7 8 9
  15. 15. <ul><li>Uso de instrucciones de salto </li></ul><ul><li>La instrucción goto </li></ul><ul><li>Las instrucciones break y continue </li></ul>
  16. 16. La instrucción goto <ul><li>Transfiere el flujo de control a una instrucción con etiqueta </li></ul><ul><li>Pueden dar lugar fácilmente a código “spaghetti” de difícil interpretación </li></ul>if (numero % 2 == 0) goto Par; Console.WriteLine(“impar&quot;); goto Fin; Par: Console.WriteLine(“par&quot;); Fin:;
  17. 17. Las instrucciones break and continue <ul><li>La instrucción break salta fuera de una iteración </li></ul><ul><li>La instrucción continue salta a la siguiente iteración </li></ul>int i = 0; while (true) { Console.WriteLine(i); i++; if (i < 10) continue; else break; }
  18. 18. <ul><li>Tratamiento de excepciones básicas </li></ul><ul><li>¿Por qué se emplean excepciones? </li></ul><ul><li>Objetos excepción </li></ul><ul><li>Uso de bloques try-catch </li></ul><ul><li>Bloques catch múltiples </li></ul>
  19. 19. ¿Por qué se emplean excepciones? <ul><li>El tradicional tratamiento procedural de errores es demasiado complicado </li></ul>int errorCodigo = 0; FileInfo source = new FileInfo(&quot;code.cs&quot;); if (errorCodigo == -1) goto Fallo; int longitud = (int)source.Length; if (errorCodigo == -2) goto Fallo; char[] contenido = new char[longitud]; if (errorCodigo == -3) goto Fallo; // No hay problemas ... Fallo: ... Trat. De errores Lógica del programa
  20. 20. Obejetos Excepción Exception SystemException OutOfMemoryException IOException NullReferenceException ApplicationException
  21. 21. Uso de bloques try-catch <ul><li>Solución orientada a objetos para el tratamiento de errores </li></ul><ul><ul><li>Poner el código normal en un bloque try </li></ul></ul><ul><ul><li>Tratar las excepciones en un bloque catch aparte </li></ul></ul>try { Console.WriteLine(&quot;Escriba un número&quot;); int i = int.Parse(Console.ReadLine()); } catch (OverflowException capturada) { Console.WriteLine(capturada); } Tratamiento de errores Lógica del programa
  22. 22. Bloques catch múltiples <ul><li>Cada bloque catch captura una clase de excepcion </li></ul><ul><li>Un bloque try puede tener un bloque catch general </li></ul><ul><li>Un bloque try no puede capturar una clase derivada de una clase capturada en un bloque catch anterior </li></ul>try { Console.WriteLine(“Escriba el primer número&quot;); int i = int.Parse(Console.ReadLine()); Console.WriteLine(&quot;Escriba el segundo número&quot;); int j = int.Parse(Console.ReadLine()); int k = i / j; } catch (OverflowException capturada) {…} catch (DivideByZeroException capturada) {…}
  23. 23. <ul><li>Lanzamiento de excepciones </li></ul><ul><li>La instrucción throw </li></ul><ul><li>La cláusula finally </li></ul><ul><li>Comprobación de desbordamiento aritmético </li></ul><ul><li>Normas para el tratamiento de excepciones </li></ul>
  24. 24. La instrucción throw <ul><li>Lanza una excepción apropiada </li></ul><ul><li>Asigna a la excepción un mensaje significativo </li></ul>throw expression ; if (minuto < 1 || minuto >= 60) { throw new InvalidTimeException(minuto + &quot; no es un minuto válido&quot;); // !! Not alcanzado !! }
  25. 25. La cláusula finally <ul><li>Las instrucciones de un bloque finally se ejecutan </li></ul>Monitor.Enter(x); try { ... } finally { Monitor.Exit(x); } Bloques catch opcionales
  26. 26. Comprobación de desbordamiento aritmético <ul><li>Por defecto, el desbordamiento aritmético no se comprueba </li></ul><ul><ul><li>Un comando checked activa la comprobación de desbordamiento </li></ul></ul>checked { int numero = int.MaxValue; Console.WriteLine(++numero); } unchecked { int numero = int.MaxValue; Console.WriteLine(++numero); } -2147483648 OverflowException Se lanza un objeto excepción. WriteLine no se ejecuta MaxValue + 1 es negativo?
  27. 27. Normas para el tratamiento de excepciones <ul><li>Lanzamiento </li></ul><ul><ul><li>Evitar excepciones para casos normales o esperados </li></ul></ul><ul><ul><li>Nunca crear ni lanzar objetos de clase Exception </li></ul></ul><ul><ul><li>Incluir una cadena de descripción en un objeto Exception </li></ul></ul><ul><ul><li>Lanzar objetos de la clase más específica posible </li></ul></ul><ul><li>Captura </li></ul><ul><ul><li>Ordenar los bloques catch de lo específico a lo general </li></ul></ul><ul><ul><li>No permitir que salgan excepciones de Main </li></ul></ul>
  28. 28. Práctica – Compartición y seguridad de los recursos de red
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×