En este artículo, intentaremos comprender cuándo se detecta la excepción y cuándo se lanza y luego se almacena en caché en la función asíncrona. Visualicemos el enunciado de nuestro problema y su solución con la ayuda de ejemplos de codificación.
Ejemplo 1: Crearemos una nueva función que arrojará un error, ya sea usando el método Promise.reject() o con la instrucción throw . Atraparemos ese error de lanzamiento en otra función que será la función async() y luego el resto de nuestro código también se ejecutará, lo cual no es necesario.
Javascript
let exception_thrown_method = () => { return Promise.reject("Exception thrown...!!"); }; let catchException = async () => { let msg = await exception_thrown_method().catch((error) => console.log("Caught Error: " + error) ); console.log("Stop code's execution....."); }; catchException();
Producción:
Caught Error: Exception thrown...!! Stop code's execution.....
Ejemplo 2: en la función async() , crearemos un nuevo bloque try/catch . En el bloque de prueba, llamaremos a nuestra primera función que arroja un error. En la instrucción catch, detectaremos el error que recibimos de la primera función. En la salida, veremos que no se imprime ninguna línea adicional, solo se imprimirá la línea de instrucción catch, que es el resultado deseado.
Javascript
<script> let exception_thrown_method = () => { return Promise.reject("Exception thrown...!!"); }; let catchException = async () => { try { await exception_thrown_method(); console.log("Stop code's execution here only....!!"); } catch (error) { console.log("Caught Error: " + error); } }; catchException(); </script>
Producción:
Caught Error: Exception thrown...!!
Ejemplo 3: Haremos ciertos cambios en el método catchException() async() . En esta función asíncrona, crearemos una variable para llamar a nuestro método y luego usaremos el método catch() y luego devolveremos «null», que parece ser como tener una variable de bandera. Compruebe si el valor de la variable es nulo escribiendo una declaración de retorno vacía. En la salida, veremos que no se imprime ninguna línea adicional, solo se imprime la línea requerida.
Javascript
<script> let exception_thrown_method = () => { return Promise.reject("Exception thrown...!!"); }; let catchException = async () => { let result = await exception_thrown_method().catch((error) => { console.log("Caught error: " + error); return null; }); if (result === null) { return; } console.log("Stop code's execution here only..."); }; catchException(); </script>
Producción:
Caught error: Exception thrown...!!
Publicación traducida automáticamente
Artículo escrito por amansingla y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA