Esto se debe principalmente a que el flujo del programa en JS (hasta hace poco) ha sido de naturaleza más asincrónica y, como resultado, intentar capturar generalmente no fue muy útil. Además, las mejores prácticas son no usar try / catch.
Ejemplo asíncrono:
tratar {
myAsyncCallToFetchData ()
} captura (e) {
console.log (‘La única forma en que esto se disparará es si la función anterior ni siquiera existe’);
}
- ¿Cuáles son las estrategias a seguir al crear diseños web receptivos?
- ¿Cuál es la mejor manera de eliminar el encabezado del sitio web al imprimir una página web dentro del navegador?
- Cómo copiar un sitio de WordPress en un dominio diferente (manteniendo el tema principal y secundario)
- ¿Cómo y qué recursos usaste para aprender el desarrollo web con Ruby on Rails y conseguir un trabajo como desarrollador de Ruby on Rails?
- ¿Cuánto javascript necesito para el desarrollo web?
Por lo tanto, el código anterior no es muy útil porque solo detectará errores hasta que se llame a la función asincrónica.
Como resultado, la gente construyó un nuevo concepto para detectar errores asincrónicos, llamado promesa. Esto te permite expresar cosas como esta:
mi promesa
.then (función (datos) {
// ¡Éxito!
})
.catch (función (e) {
// Error
});
Esto funcionó por un largo tiempo. Verá una gran cantidad de código JavaScript de back-end haciendo esto. Es probable que todo el código de front-end relacionado con la red también haga esto. Sin embargo, esto aún no es ideal, es posible que aún necesite envolver todo esto en un intento de captura en caso de que algo se rompa sincrónico. Esto es extremadamente tedioso, y el retorno del tiempo empleado es malo. Afortunadamente, recientemente se implementó una nueva característica llamada espera asíncrona. Ahora puedes hacer lo siguiente:
función asíncrona processStuff () {
tratar {
const myData = aguardar myAsyncFetchCall ();
// … haz algunas cosas
} captura (e) {
// ¡Atraparé todos los errores ahora!
}
}
Por lo tanto, este intento de captura ahora es más efectivo ya que detecta más errores. Debajo del capó, se traducirá .then y .catch de una promesa de permitir que el intento de captura funcione correctamente.
Creo que con el tiempo, como resultado de la espera asincrónica, veremos un manejo de excepciones mucho más tradicional en JS. Ha sido realmente difícil usarlo razonablemente antes. Además, hubo muchas mejores prácticas de la comunidad que indicaron que no deberíamos usar try catch por una multitud de razones. Durante un largo período de tiempo, a las devoluciones de llamada también se les pasaron ‘errores’. A veces, el resultado de una llamada a la función también sería un objeto de error. En general, muchos sistemas simplemente explotan si pasa las variables incorrectas. ¡Ojalá todo esto cambie! Con la llegada de la verificación de tipo y asíncrono aguardan, creo que podría.