Dart – Tipos de excepciones

La excepción es un evento no deseado en tiempo de ejecución que interrumpe el flujo de ejecución del código. Puede ocurrir debido a un error del programador o por una entrada incorrecta del usuario. El manejo de dichos eventos en tiempo de ejecución se denomina Manejo de excepciones. Por ejemplo: cuando intentamos acceder a los elementos de la lista vacía. Las excepciones de Dart son el error de tiempo de ejecución. Se genera cuando el programa se ejecuta.  

Excepciones integradas en Dart:

La siguiente tabla tiene una lista de las principales excepciones de dardos.

Sr.  Excepciones Descripción
1 Excepción de carga diferida Se lanza cuando una biblioteca diferida no se carga.
2 FromatException  Es la excepción que se lanza.
3 IntegerDivisionByZeroExceptionIntegerDivisionByZeroException Se lanza cuando el número se divide por cero.
4 Excepción IOE Es la clase base de las excepciones relacionadas con la entrada y la salida.
5 IsolateSpawnExceptionIsolateSpawnException Se lanza cuando no se puede crear un aislado.
6 Se acabó el tiempo Se lanza cuando ocurre un tiempo de espera programado mientras se espera un resultado asíncrono.

Cada excepción incorporada en Drat viene bajo una clase predefinida llamada Excepción. Para evitar que el programa haga una excepción, utilizamos los bloques try/on/catch en Dart.

try { 
   // program that might throw an exception 
}  
on Exception1 { 
   // code for handling exception 1
}  
catch Exception2 { 
   // code for handling exception 2
}
  1. Try: en el bloque try, escribimos el código lógico que puede producir la excepción
  2. Catch: el bloque Catch se escribe con el bloque try para capturar las excepciones generales: en otras palabras, si no está claro qué tipo de excepción se producirá. Se utiliza el bloque de captura.
  3. On: On the block se usa cuando está 100% seguro de qué tipo de excepción se lanzará.
  4. Finalmente: La parte final siempre se ejecuta, pero no es obligatoria.

Ejemplo 1: Usando un bloque de  prueba en el dardo.

Dart

// importing dart:io file 
import 'dart:io'; 
  
void main() { 
    String geek = "GeeksForGeeks"; 
    try{ 
        var geek2 = geek ~/ 0; 
        print(geek2); 
    } 
    on FormatException{ 
        print("Error!! \nCan't act as input is not an integer."); 
    } 
}

Producción:

Error!! 
Can't act as input is not an integer.

Explicación:

En el código anterior, declaramos geek y geek2 de dos variables en la función principal(). Escribimos el código sospechoso en el bloque de prueba dividido la x por el 0 que podría generar una excepción. El bloque de prueba encontró el error y el control transfirió al bloque que tiene el código para manejar el error. Al usar esto, el programa no detuvo su ejecución.

Ejemplo 2: Usar un bloque de  intento y captura en el dardo.

Dart

void main() { 
    String geek = "GeeksForGeeks"; 
        try{ 
            var geek2 = geek ~/ 0; 
            print(geek2); 
        }
    
        // It returns the built-in exception
        // related to the occurring exception  
        catch(e){ 
            print(e); 
        } 
}

Producción:

Class 'String' has no instance method '~/'.
NoSuchMethodError: method not found: '~/'
Receiver: "GeeksForGeeks"
Arguments: [0]

Ejemplo 3 : Uso de un bloque on…catch en el dardo.

Dart

void main() { 
    String geek = "GeeksForGeeks"; 
    try{ 
        var geek2 = geek ~/ 0; 
        print(geek2); 
    } 
    on FormatException catch(e) {
   
        print("Error!! \nCan't act as input is not an integer."); 
    } 
}

Producción:

FormatException

Bloque final:

 El bloque final en dart se usa para incluir código específico que debe ejecutarse independientemente del error en el código. Aunque es opcional incluir el bloque finalmente, si lo incluye, entonces debería ser después de que terminen los bloques try y catch.

Syntax:
try {   
  .....  
}    
on Exception1 { 
  ....  
}    
catch Exception2 {  
  ....
}    
finally {   
   // code that should always execute; whether exception or not.  
}  

Ejemplo:

Dart

void main() { 
    String geek = "GeeksForGeeks"; 
    try{ 
        var geek2 = geek ~/ 0; 
        print(geek2); 
    } 
    on FormatException{ 
        print("Error!! \nCan't act as input is not an integer."); 
    } 
      finally { 
        print("Code is at end, Geek"); 
      }     
    
}

Producción:

Error!! 
Can't act as input is not an integer.
Code is at end, Geek

Lanzar una excepción

La palabra clave throw se utiliza para generar explícitamente una excepción. Dart proporciona muchas clases de excepción integradas que puede lanzar manualmente.

Syntax: throw new Exception_name()  

Ejemplo:

Dart

void main() {   
   try {   
      geek(-5);   
   }   
   catch(e) {   
      print('The marks cannot be negative');   
   }   
}    
void geek(int div2) {   
   if(div2<0) {   
      throw new FormatException();  // Raising explanation externally  
   }   
}  

Producción:

The marks cannot be negative

En el programa anterior, hemos envuelto la declaración geek (-5) en el bloque de prueba porque puede generar una excepción.

Excepciones personalizadas

Cada clase de excepción hereda de la clase de excepción. Dart permite crear excepciones personalizadas al extender las existentes.

Syntax: class Custom_exception_Name implements Exception { }   

Ejemplo: Creación de excepciones personalizadas en el dart. 

Dart

// extending Class Age 
// with Exception class 
class Age implements Exception { 
String error() => 'Geek, your age is less than 18 '; 
} 
  
void main() { 
int geek_age1 = 20; 
int geek_age2 = 10; 
      
try{ 
    
    // Checking Age and 
    // calling if the 
    // exception occur 
    check(geek_age1); 
    check(geek_age2); 
} 
catch(e){ 
    
    // Printing error 
    print(e.error()); 
} 
} 
  
// Checking Age 
void check(int age){ 
if(age < 18){ 
    throw new Age(); 
} 
else
{ 
    print("You are eligible to visit GeeksForGeeks "); 
} 
}

Producción:

You are eligible to visit GeeksForGeeks
Geek, your age is less than 18 

En el ejemplo anterior, creamos una excepción personalizada, Edad. El código generó la excepción si la cantidad ingresada no está dentro del rango exceptuado, y encerramos la invocación de la función en el bloque try… catch. 

Publicación traducida automáticamente

Artículo escrito por aksrathod07 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *