El propósito principal del bloque catch es manejar la excepción generada en el bloque try. Este bloque solo se ejecutará cuando se produzca la excepción en el programa.
En C#, puede usar más de un bloque catch con el bloque try. Generalmente, el bloque catch múltiple se usa para manejar diferentes tipos de excepciones, lo que significa que cada bloque catch se usa para manejar diferentes tipos de excepción. Si usa varios bloques catch para el mismo tipo de excepción, obtendrá un error de tiempo de compilación porque C# no le permite usar varios bloques catch para el mismo tipo de excepción . Un bloque catch siempre está precedido por el bloque try.
En general, el bloque catch se comprueba en el orden en que se han producido en el programa. Si el tipo de excepción dado coincide con el primer bloque catch, el primer bloque catch se ejecuta y el resto de los bloques catch se ignoran. Y si el bloque catch inicial no es adecuado para el tipo de excepción, el compilador busca el siguiente bloque catch.
Sintaxis:
try { // Your code } // 1st catch block catch(Exception_Name) { // Code } // 2nd catch block catch(Exception_Name) { // Code } . . . .
A continuación se dan algunos ejemplos para entender la implementación de una mejor manera:
Ejemplo 1: en el siguiente ejemplo, intente bloquear generar dos tipos diferentes de excepción, es decir , DivideByZeroException e IndexOutOfRangeException . Ahora usamos dos bloques catch para manejar estas excepciones que están asociadas con un solo bloque try. Cada bloque catch capturó un tipo diferente de excepción, como el bloque catch 1 que se usa para capturar DivideByZeroException, el bloque catch 2 se usa para capturar IndexOutOfRangeException.
// C# program to illustrate the // use of multiple catch block using System; class GFG { // Main Method static void Main() { // Here, number is greater than divisor int[] number = { 8, 17, 24, 5, 25 }; int[] divisor = { 2, 0, 0, 5 }; // --------- try block --------- for (int j = 0; j < number.Length; j++) // Here this block raises two different // types of exception, i.e. DivideByZeroException // and IndexOutOfRangeException try { Console.WriteLine("Number: " + number[j]); Console.WriteLine("Divisor: " + divisor[j]); Console.WriteLine("Quotient: " + number[j] / divisor[j]); } // Catch block 1 // This Catch block is for // handling DivideByZeroException catch (DivideByZeroException) { Console.WriteLine("Not possible to Divide by zero"); } // Catch block 2 // This Catch block is for // handling IndexOutOfRangeException catch (IndexOutOfRangeException) { Console.WriteLine("Index is Out of Range"); } } }
Number: 8 Divisor: 2 Quotient: 4 Number: 17 Divisor: 0 Not possible to Divide by zero Number: 24 Divisor: 0 Not possible to Divide by zero Number: 5 Divisor: 5 Quotient: 1 Number: 25 Index is Out of Range
Ejemplo 2: en el siguiente ejemplo, intente bloquear generar una excepción. Así que usaremos tres tipos diferentes de bloques catch para manejar la excepción generada por el bloque try. El bloque catch 1 manejará IndexOutOfRangeException , el bloque catch 2 manejará FormatException y el bloque catch 3 manejará OverflowException .
// C# program to illustrate the concept // of multiple catch clause using System; class GFG { // Main method static void Main() { // This block raises an exception try { byte data = byte.Parse("a"); Console.WriteLine(data); } // Catch block 1 // This block is used to handle // IndexOutOfRangeException type exception catch (IndexOutOfRangeException) { Console.WriteLine("At least provide one Argument!"); } // Catch block 2 // This block is used to handle // FormatException type exception catch (FormatException) { Console.WriteLine("Entered value in not a number!"); } // Catch block 3 // This block is used to handle // OverflowException type exception catch (OverflowException) { Console.WriteLine("Data is out of Range!"); } } }
Entered value in not a number!
Publicación traducida automáticamente
Artículo escrito por ankita_saini y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA