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 }
- Try: en el bloque try, escribimos el código lógico que puede producir la excepción
- 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.
- On: On the block se usa cuando está 100% seguro de qué tipo de excepción se lanzará.
- 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