Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Desafío: Manejo de Errores | Estructuras de Datos y Manejo de Archivos
C# Más Allá de lo Básico

bookDesafío: Manejo de Errores

La sintaxis try-catch tiene una sintaxis adicional que permite capturar tipos específicos de errores y tratarlos por separado:

index.cs

index.cs

copy
1234567891011121314151617
try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }

El tipo Exception utilizado en el capítulo anterior simplemente captura todo tipo de errores; sin embargo, existen algunos subtipos de Exception que capturan errores más específicos. A continuación se presentan algunos tipos comunes de excepciones:

  1. DivideByZeroException: hay una división por cero;
  2. FileNotFoundException: el archivo al que se intenta acceder no existe;
  3. KeyNotFoundException: la clave del diccionario no existe;
  4. IndexOutOfRangeException: el índice especificado de un arreglo o lista no es válido.

El término errorVarName es una variable que almacena el objeto Exception y contiene información como el mensaje de error, al cual se puede acceder mediante errorVarName.Message. Se puede omitir si no se va a utilizar:

index.cs

index.cs

copy
12345678910111213
try { // code } catch (ExceptionType) { // code } ... finally { // code }

Aquí tienes un ejemplo de cómo utilizar este tipo de bloque try-catch:

index.cs

index.cs

copy
123456789101112131415161718192021222324252627
using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }

Ahora, utilizando estos conceptos, completa los espacios en blanco con los tipos de excepciones relevantes en el siguiente código para finalizar el desafío.

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }

Utiliza el tipo de excepción relevante para cada bloque catch. Lee el código y comprende qué bloque catch es el más adecuado para manejar un determinado tipo de excepción.

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 10

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Awesome!

Completion rate improved to 2.04

bookDesafío: Manejo de Errores

Desliza para mostrar el menú

La sintaxis try-catch tiene una sintaxis adicional que permite capturar tipos específicos de errores y tratarlos por separado:

index.cs

index.cs

copy
1234567891011121314151617
try { // code } catch (ExceptionType errorVarName) { // code } catch (ExceptionType errorVarName) { // code } ... finally { // code }

El tipo Exception utilizado en el capítulo anterior simplemente captura todo tipo de errores; sin embargo, existen algunos subtipos de Exception que capturan errores más específicos. A continuación se presentan algunos tipos comunes de excepciones:

  1. DivideByZeroException: hay una división por cero;
  2. FileNotFoundException: el archivo al que se intenta acceder no existe;
  3. KeyNotFoundException: la clave del diccionario no existe;
  4. IndexOutOfRangeException: el índice especificado de un arreglo o lista no es válido.

El término errorVarName es una variable que almacena el objeto Exception y contiene información como el mensaje de error, al cual se puede acceder mediante errorVarName.Message. Se puede omitir si no se va a utilizar:

index.cs

index.cs

copy
12345678910111213
try { // code } catch (ExceptionType) { // code } ... finally { // code }

Aquí tienes un ejemplo de cómo utilizar este tipo de bloque try-catch:

index.cs

index.cs

copy
123456789101112131415161718192021222324252627
using System; class Program { static void Main(string[] args) { int[] myArray = { 0, 2, 4, 6, 8, 10 }; int i = 0; while (true) { try { Console.Write(myArray[i] / i + " "); i++; } catch(DivideByZeroException) { i++; } catch(IndexOutOfRangeException) { break; } } } }

Ahora, utilizando estos conceptos, completa los espacios en blanco con los tipos de excepciones relevantes en el siguiente código para finalizar el desafío.

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using System; using System.Collections.Generic; class Program { static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (___) { break; } catch (___) { numberNames.Add(7, "Seven"); } } } }

Utiliza el tipo de excepción relevante para cada bloque catch. Lee el código y comprende qué bloque catch es el más adecuado para manejar un determinado tipo de excepción.

index.cs

index.cs

copy
1234567891011121314151617181920212223242526272829303132333435
using System; using System.Collections.Generic; public class HelloWorld { public static void Main(string[] args) { int[] numbers = { 1, 2, 5, 7, 9 }; var numberNames = new Dictionary<int, string>(); numberNames.Add(1, "One"); numberNames.Add(2, "Two"); numberNames.Add(5, "Five"); numberNames.Add(9, "Nine"); int i = 0; while (true) { try { int key = numbers[i]; Console.WriteLine($"{key} is {numberNames[key]}"); i++; } catch (IndexOutOfRangeException) { break; } catch (KeyNotFoundException) { numberNames.Add(7, "Seven"); } } } }
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 1. Capítulo 10
some-alt