Envíe los registros de errores a un servicio externo
Use objetos de error en Rules
Error de Node, como en:
return callback(new Error('some description'));
Para obtener más información, consulte Clase: Error en nodejs.org.
Como alternativa, puede devolverse una instancia de UnauthorizedError, específico de Auth0, lo que hace que se devuelva a la aplicación que inició la autenticación una condición de error unauthorized con la descripción del error proporcionada; es decir, la aplicación desde la que se inició la redirección al endpoint /authorize. Esto permite que una aplicación ofrezca capacidad de reintento condicional y que implemente Rules para denegar el acceso en función de determinadas condiciones:
return callback(new UnauthorizedError('some description'), user, context);
Use descripciones significativas para los códigos de error
UnauthorizedError solo devuelve la descripción proporcionada. Para aplicar un procesamiento específico a las condiciones de error de acceso no autorizado, te recomendamos dar formato a las descripciones para que incluyan información del código de error a la que se pueda acceder fácilmente, por ejemplo:
'[00043] - mi descripción de error específica')
Manejo de excepciones
catch al trabajar con objetos Promise. El uso de objetos Promise también puede ser eficaz para manejar errores durante operaciones no asíncronas. Como se muestra a continuación, un objeto Promise puede usarse para encapsular, por ejemplo, una llamada síncrona a una función, lo que facilita la implementación del manejo de errores en cascada mediante el encadenamiento de promesas y técnicas similares. Para obtener más información sobre el objeto Promise, consulte Promise en MDN Web Docs. Para obtener más información sobre el encadenamiento de promesas, consulte Error Handling with Promises en javascript.info.
try...catch para manejar las excepciones de JavaScript que se producen durante una operación síncrona. Para obtener más información, consulte try...catch en MDN Web Docs.Configurar este tipo de control de excepciones suele tener un costo en el rendimiento, así que úselo con moderación; el rendimiento de una Rule debe ser lo más óptimo posible. Un enfoque más pragmático es implementar un procesamiento que evite que se produzcan excepciones, en lugar de gestionarlas una vez que ya se hayan producido. Para obtener más información sobre las prácticas recomendadas, consulte Prácticas recomendadas de rendimiento.
Evite los objetos no inicializados en Rules
user.user_metadata = user.user_metadata || {})
En una Rule, tomar medidas para evitar que se produzca una excepción desde el principio es una práctica recomendada y, por lo general, resulta menos costoso en términos de rendimiento y uso de recursos que implementar el manejo de excepciones.