what w3school understanding reject promises prefer from example errors javascript error-handling promise es6-promise

javascript - understanding - w3school promise



¿Debe un mensaje de Promise.reject estar envuelto en un error? (2)

Recomiendo usar solo el objeto Error (no una cadena) para enviar los motivos.

Justificación

Otras partes del código están generando los Errors dentro del motivo de rechazo de Promesa ...

Si algún código falla, la excepción devuelve el objeto Error . Además, si llama a cualquier biblioteca externa que no sea compatible con la Promesa, lanzará el objeto Error cuando algo falla. Si uno de los errores mencionados anteriormente ocurre dentro de la Promesa, se transformará en catch con el objeto Error .

Por lo tanto, si va a utilizar la string como motivo de rechazo de promesa, debe esperar que la captura pueda ocurrir con su string (parte de su código) o Error (cuando se produce algún error general). Por lo tanto, tendrá que usar el código feo (err.message || err) todas partes, cuando tenga que manejar el error.

Usando la Promise nativa (ES6). ¿Debo rechazar con un Error ?

Promise.reject(new Error(''Something went wrong''));

O debería simplemente rechazar con una cadena:

Promise.reject(''Something went wrong'');

¿Y cuál es la diferencia en el comportamiento del navegador?


Sí, definitivamente debería. Una cadena no es un error , cuando tienes errores, por lo general, significa que algo salió mal, lo que significa que realmente disfrutarás de un buen seguimiento de la pila. Ningún error - no hay seguimiento de la pila.

Al igual que con try / catch, si agregas .catch a un rechazo lanzado, quieres poder registrar el seguimiento de la pila, lo que hace que las cadenas se .catch .

Estoy en el móvil, por lo que esta respuesta es bastante corta, pero realmente no puedo enfatizar lo suficiente lo importante que es esto. En aplicaciones grandes (10K + LoC), las acumulaciones de rechazos realmente hicieron la diferencia entre una búsqueda remota de errores fácil y una larga noche en la oficina.