Servidor Couchbase

De N1QL a JavaScript y viceversa - Parte 4: Tratamiento de errores

En blogs anteriores, hemos cubierto la ejecución de N1QL desde JavaScript funcionesTramitación de documentos a través de iteradoresy manipulación de datos.

Ahora pasamos a manejar los errores de las sentencias N1QL.

Tratamiento de errores

Cuando se produce un error de cualquier naturaleza, el jsevaluator por defecto detendrá la ejecución de la función y devolverá un error:

En este caso concreto, el segundo INSERT fallará porque la clave k10 ya existe:

No tienes que ceñirte al comportamiento por defecto, JavaScript permite capturar errores y manejarlos:

En este caso, la función doInsert() devuelve fallo porque clave k10 ya existe.

Retorno vs lanzamiento

En captura se puede utilizar para manejar el fallo de cualquier manera que sea útil para su lógica de negocio.

Las opciones disponibles se reducen a 1) tomar alguna acción evasiva y continuar la ejecución, 2) regresar antes de tiempo con éxito, y 3) regresar antes de tiempo con fracaso.

La diferencia entre el éxito y el fracaso es simplemente utilizar devolver para devolver un valor como en el ejemplo anterior vs tirar para devolver un error.

La diferencia entre ambos es importante, porque si decide devolver un resultado, la petición de llamada continuará su ejecución. Mientras que si lanza un error, toda la petición fallará con el error, así que tenga en cuenta cuál quiere usar, porque marcará la diferencia entre que su petición funcione correctamente o se comporte mal.

Expresión devuelta

Lo segundo que hay que tener en cuenta es que, tanto si devuelve como si lanza un error, es muy posible que quiera dar información significativa.

Considere el siguiente código:

Esto fallará con algo como:

Al igual que en el ejemplo anterior, lo que se deduce es que err es un objeto, y se devuelve en motivo campo.

Sin embargo, si modifica el tirar declaración así:

En doInsert() lanzará ahora una cadena y no un objeto:

En err se convierte en una cadena y, de repente, el error no es tan legible.

Esto se aplica a devolver en particular, por defecto err contiene cadenas que contienen objetos JSON marshalled.

Por ejemplo:

Devoluciones:

Si desea obtener un valor devuelto agradable, tiene que analizar el archivo mensaje.error antes de devolverlo:

Que rinde:

Y si quieres incluir también la pila, tienes que construir un nuevo objeto así:

Wque produce:

La moraleja de la historia es: ten cuidado con cómo devuelves el error, y ten cuidado con cómo lo formateas.

Conclusión

A lo largo de varios blogs, hemos cubierto la ejecución de N1QL, el procesamiento de documentos y la manipulación de datos, y el manejo de errores.

A continuación hablaremos de las declaraciones preparadas.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Author

Posted by Marco Greco, Arquitecto de software, Couchbase

In a previous life, Marco used to be CTO, radiation physicist, software architect, sysadmin, DBA, trainer and general handyman at Italy's largest radiation theraphy practice. Having switched career and country, he spent more than two decades in various support and development positions in Informix first and IBM later, before finally taking the plunge and joining Couchbase, to help them make gold out of N1QL. He holds several patents and has authored open source projects of his own.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.