{"id":1619,"date":"2014-12-18T14:20:07","date_gmt":"2014-12-18T14:20:07","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1619"},"modified":"2025-06-13T21:10:57","modified_gmt":"2025-06-14T04:10:57","slug":"handling-runtime-errors-ruby-python-and-c-clients","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/handling-runtime-errors-ruby-python-and-c-clients\/","title":{"rendered":"Gesti\u00f3n de errores en tiempo de ejecuci\u00f3n en clientes Ruby, Python y C"},"content":{"rendered":"<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">En alg\u00fan momento, toda aplicaci\u00f3n tendr\u00e1 que hacer frente a una excepci\u00f3n: los errores de ejecuci\u00f3n se producen de forma inesperada y tu aplicaci\u00f3n debe saber c\u00f3mo tratarlos y recuperarse. Siempre es bueno que la gesti\u00f3n de errores sea transparente para el usuario final, pero, como m\u00ednimo, una buena gesti\u00f3n de errores deber\u00eda resolver el problema, dar suficiente informaci\u00f3n al usuario sobre qu\u00e9 hacer a continuaci\u00f3n y salir del programa con elegancia. Si has puesto mucho esfuerzo en escribir tu aplicaci\u00f3n personalizada, \u00bfpor qu\u00e9 dejar que un error de ejecuci\u00f3n lo arruine todo? <\/span><strong style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Este blog explica qu\u00e9 significan los diferentes c\u00f3digos de retorno en los clientes derivados de libCouchbase (Ruby, PHP, Python, C\/C++) y qu\u00e9 debe hacer tu aplicaci\u00f3n cuando se encuentre con uno de ellos.<\/strong><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">.<\/span><\/p>\n<p>Los clientes de Couchbase son <strong>inteligente<\/strong>. Esto significa que son <strong>consciente de la topolog\u00eda del cl\u00faster<\/strong> - si un nodo falla, el cliente es consciente de ello. Si se a\u00f1ade un nuevo nodo al cluster, el cliente tambi\u00e9n es consciente de este nuevo nodo. En comparaci\u00f3n con los clientes memcached, los clientes inteligentes proporcionan un mejor rendimiento y disponibilidad durante los fallos, enrutando autom\u00e1ticamente las peticiones al servidor Couchbase correcto.  Los clientes inteligentes se derivan de <a href=\"https:\/\/trondn.blogspot.ca\/2011\/10\/libcouchbase-explore-full-features-of.html\">libcouchbase<\/a> (Ruby, Python, Perl, node.js y PHP) o est\u00e1n escritos en un lenguaje nativo como Java y .NET. Este blog cubrir\u00e1 los c\u00f3digos de error devueltos por los clientes libcouchbase.<\/p>\n<p>Las aplicaciones utilizan APIs de clientes inteligentes para enviar peticiones a Couchbase. Couchbase escucha en 4<a href=\"https:\/\/www.couchbase.com\/blog\/es\/docs\/couchbase-manual-2.0\/couchbase-network-ports.html\/\">\u00a0puertos<\/a> - 11210 (puerto directo), 11211 (puerto proxy), 8091 (consola de administraci\u00f3n) y 8092 (vistas de couchbase). Una vez conectados, los clientes pueden enviar un flujo de peticiones en la misma conexi\u00f3n al servidor. Los mensajes de petici\u00f3n suelen incluir una cabecera binaria memcached de 24 bytes y una carga \u00fatil que es opcional. La longitud de la carga \u00fatil se especifica en la cabecera. Las mutaciones de documentos van primero a la cach\u00e9 gestionada por objetos y luego se replican y persisten de forma as\u00edncrona. Couchbase devuelve un \u00e9xito (0) o un fallo (c\u00f3digo de error distinto de cero) tan pronto como el documento se a\u00f1ade a la cach\u00e9 gestionada por objetos. El c\u00f3digo de retorno indica el \u00e9xito o fracaso global de la llamada al API.<\/p>\n<p>Es una buena pr\u00e1ctica de programaci\u00f3n comprobar los c\u00f3digos de error en tu aplicaci\u00f3n para saber cu\u00e1ndo reintentar la petici\u00f3n o lanzar un error de usuario. La siguiente tabla enumera los c\u00f3digos de error en Couchbase y sugiere lo que los clientes deben hacer si se encuentran con un error que aparece en la lista :<\/p>\n<p><strong>Si utiliza un cliente derivado de libCouchbase <\/strong>como\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Ruby, Python, Perl, node.js y PHP, los siguientes son algunos de los c\u00f3digos de error que puede ver:<\/span><\/p>\n<div class=\"responsive-table\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td>\n<p align=\"center\"><strong>C\u00f3digo de error recibido<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u00bfQu\u00e9 significa?<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>\u00bfQu\u00e9 debe hacer el cliente?<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>LCB_SUCCESS<\/td>\n<td>Operaci\u00f3n concluida con \u00e9xito<\/td>\n<td>No hacer nada. Couchbase ha ejecutado correctamente la solicitud del cliente.<\/td>\n<\/tr>\n<tr>\n<td>LCB_AUTH_ERROR<\/td>\n<td>Error de autenticaci\u00f3n. Se ha proporcionado un nombre de usuario o contrase\u00f1a no v\u00e1lidos<\/td>\n<td>Compruebe el nombre de usuario y la contrase\u00f1a suministrados. Los clientes deben volver a intentarlo con el nombre de usuario y la contrase\u00f1a correctos.<\/td>\n<\/tr>\n<tr>\n<td>LCB_DELTA_BADVAL<\/p>\n<p>&nbsp;<\/td>\n<td>La operaci\u00f3n no puede ejecutarse con los argumentos solicitados.<\/td>\n<td>Comprueba los argumentos y la operaci\u00f3n que se ejecuta sobre los argumentos.<\/p>\n<p><strong>Por ejemplo: <\/strong>Incremento de un valor no num\u00e9rico mediante el incr o incremento por un valor no num\u00e9rico<\/td>\n<\/tr>\n<tr>\n<td>LCB_E2BIG<\/td>\n<td>El servidor ha informado de que el objeto es demasiado grande<\/td>\n<td>El tama\u00f1o m\u00e1ximo de clave en Couchbase es de 250 bytes. Tama\u00f1o m\u00e1ximo de documento en Couchbase es 20Mb.<\/p>\n<p>&nbsp;<\/p>\n<p>El cliente debe reintentar y utilizar objetos con tama\u00f1os dentro de estos l\u00edmites.<\/td>\n<\/tr>\n<tr>\n<td>LCB_EBUSY<\/td>\n<td>El servidor est\u00e1 demasiado ocupado para atender sus peticiones en este momento.<\/td>\n<td>Utiliza el backoff en el c\u00f3digo de tu aplicaci\u00f3n y vuelve a intentar la operaci\u00f3n pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_EINTERNAL<\/td>\n<td>Hay un error interno dentro de la biblioteca.<\/td>\n<td>Destruye el contexto de conexi\u00f3n y crea uno nuevo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_EINVAL<\/td>\n<td>Argumentos no v\u00e1lidos especificados<\/td>\n<td>Aseg\u00farate de pasar los argumentos correctos<\/td>\n<\/tr>\n<tr>\n<td>LCB_ENOMEM<\/td>\n<td>El servidor no tiene memoria<\/td>\n<td>Esto puede ocurrir durante la presi\u00f3n de memoria cuando los documentos en memoria a\u00fan no se han volcado al disco. Retrocede y vuelve a intentarlo pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_RANGE<\/td>\n<td>Rango no v\u00e1lido especificado<\/td>\n<td>Aseg\u00farese de haber especificado los rangos adecuados<\/td>\n<\/tr>\n<tr>\n<td>LCB_ETMPFAIL<\/td>\n<td>El servidor intent\u00f3 realizar la operaci\u00f3n pero fall\u00f3 debido a una restricci\u00f3n temporal<\/td>\n<td>Retrocede y vuelve a intentarlo pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_KEY_EEXISTS<\/td>\n<td>La clave ya existe (con otro valor CAS)<\/td>\n<td>Las claves son \u00fanicas en Couchbase. Prueba con otra clave.<\/td>\n<\/tr>\n<tr>\n<td>LCB_KEY_ENOENT<\/td>\n<td>La clave no existe<\/td>\n<td>No se ha encontrado la llave. Intente buscar otra llave.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NETWORK_ERROR<\/td>\n<td>Se ha producido un problema relacionado con la red<\/td>\n<td>Soluciona el problema de la red y vuelve a intentarlo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NOT_MY_VBUCKET<\/td>\n<td>El servidor que ha recibido esta solicitud ya no es responsable de este objeto. Esto ocurre durante los cambios de topolog\u00eda del cl\u00faster o el reequilibrio.<\/td>\n<td>El cliente obtiene autom\u00e1ticamente un nuevo mapa de cl\u00fasteres del servidor y aprende d\u00f3nde debe enviar las solicitudes posteriores.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>En libcouchbase<\/strong>En realidad, este error no se expone al usuario. La biblioteca gestiona autom\u00e1ticamente la reconexi\u00f3n al servidor correcto.<\/p>\n<p>&nbsp;<\/p>\n<p>Vuelva a intentar la operaci\u00f3n transcurrido un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NOT_STORED<\/td>\n<td>El objeto no estaba almacenado en el servidor<\/td>\n<td>Utiliza el backoff en el c\u00f3digo de tu aplicaci\u00f3n y vuelve a intentar la operaci\u00f3n pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NOT_SUPPORTED<\/td>\n<td>El servidor no soporta el comando solicitado.<\/td>\n<td>Compruebe la solicitud enviada al servidor.<\/td>\n<\/tr>\n<tr>\n<td>LCB_UNKNOWN_COMMAND<\/td>\n<td>El servidor no sabe cu\u00e1l es el comando.<\/td>\n<td>Compruebe la solicitud enviada al servidor.<\/td>\n<\/tr>\n<tr>\n<td>LCB_HOST_DESCONOCIDO<\/td>\n<td>El servidor no ha podido resolver el nombre de host solicitado<\/td>\n<td>Compruebe el nombre de host especificado.<\/td>\n<\/tr>\n<tr>\n<td>LCB_PROTOCOLO_ERROR<\/td>\n<td>Hay algo incorrecto en el flujo de datos recibido por el servidor<\/td>\n<td>El conjunto de resultados debe descartarse y no utilizarse. El cliente debe reintentar la operaci\u00f3n.<\/td>\n<\/tr>\n<tr>\n<td>LCB_ETIMEOUT<\/td>\n<td>La operaci\u00f3n del servidor ha finalizado<\/td>\n<td>Esto puede ocurrir si un servidor del cluster falla y Couchbase a\u00fan tiene que detectar este fallo.<\/p>\n<p>El cliente debe reintentarlo pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_CONNECT_ERROR<\/td>\n<td>El cliente no ha podido conectarse al servidor solicitado<\/td>\n<td>El cliente debe reintentarlo pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_BUCKET_ENOINT<\/td>\n<td>El cubo solicitado no existe<\/td>\n<td>Comprueba si el bucket existe en el servidor y vuelve a intentarlo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_CLIENT_ENOMEM<\/td>\n<td>El cliente se qued\u00f3 sin memoria<\/td>\n<td>Esto puede ocurrir si los contextos de conexi\u00f3n no se liberan correctamente en el lado del cliente. Destruye el contexto de conexi\u00f3n actual y vuelve a intentarlo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_CLIENT_ETMPFAIL<\/td>\n<td>El cliente ha encontrado un error temporal.<\/td>\n<td>La aplicaci\u00f3n puede volver a intentarlo pasado un tiempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_SERVER_BUG<\/td>\n<td>El uso inesperado del protocolo del servidor caus\u00f3 resultados inesperados.<\/td>\n<td>El conjunto de resultados debe descartarse y no utilizarse.<\/p>\n<p>&nbsp;<\/p>\n<p>El desarrollador debe registrar sus pasos para reproducir el problema y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/issues\/secure\/Dashboard.jspa\/\">archivar un error<\/a>.<\/td>\n<\/tr>\n<tr>\n<td>LCB_INVALID_HOST_FORMAT<\/td>\n<td>La lista de hosts de arranque utilizaba un formato no v\u00e1lido\/no admitido.<\/td>\n<td>Compruebe el formato de nombre de host utilizado, corr\u00edjalo y vuelva a intentarlo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_INVALID_CHAR<\/td>\n<td>Car\u00e1cter no v\u00e1lido utilizado en el componente path de una URL<\/td>\n<td>Aseg\u00farese de que la ruta URL est\u00e1 codificada correctamente.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Despu\u00e9s de recibir un c\u00f3digo de error de Couchbase, las aplicaciones pueden convertir estos c\u00f3digos en una cadena - como se muestra en el fragmento de c\u00f3digo de ejemplo a continuaci\u00f3n, lcb_strerror() devuelve una cadena terminada en 0 que representa el error.<\/p>\n<p><span class=\"n\" style=\"line-height: 1\"><span style=\"color: #a61717\">\u00a0 \u00a0 \u00a0 \u00a0 #<\/span><\/span><span class=\"n\" style=\"line-height: 1;color: #333333\">incluir<\/span> <span class=\"o\" style=\"line-height: 1;font-weight: bold\">&lt;<\/span><span class=\"n\" style=\"line-height: 1;color: #333333\">libcouchbase<\/span><span class=\"o\" style=\"line-height: 1;font-weight: bold\">\/<\/span><span class=\"n\" style=\"line-height: 1;color: #333333\">couchbase<\/span><span class=\"p\" style=\"line-height: 1\">.<\/span><span class=\"n\" style=\"line-height: 1;color: #333333\">h<\/span><span class=\"o\" style=\"line-height: 1;font-weight: bold\">&gt;<\/span><\/p>\n<div id=\"file-gistfile1-c-LC2\" class=\"line\"><\/div>\n<div id=\"file-gistfile1-c-LC3\" class=\"line\"><span class=\"p\">\u00a0 \u00a0 \u00a0 \u00a0 &#8230;<\/span><\/div>\n<div id=\"file-gistfile1-c-LC4\" class=\"line\"><\/div>\n<div id=\"file-gistfile1-c-LC5\" class=\"line\"><span class=\"n\" style=\"color: #333333\">\u00a0 \u00a0 \u00a0 \u00a0 fprintf<\/span><span class=\"p\">(<\/span><span class=\"n\" style=\"color: #333333\">stdout<\/span><span class=\"p\">,<\/span> <span class=\"s\" style=\"color: #dd1144\">\"La cadena textual para LCB_SUCCESS es: %s<\/span><span class=\"se\" style=\"color: #dd1144\">n<\/span><span class=\"s\" style=\"color: #dd1144\">&#8220;<\/span><span class=\"p\">,<\/span><\/div>\n<div id=\"file-gistfile1-c-LC6\" class=\"line\"><\/div>\n<div id=\"file-gistfile1-c-LC7\" class=\"line\"><span class=\"n\" style=\"color: #333333\">\u00a0 \u00a0 \u00a0 \u00a0 lcb_strerror<\/span><span class=\"p\">(<\/span><span class=\"nb\" style=\"color: #0086b3\">NULL<\/span><span class=\"p\">,<\/span> <span class=\"n\" style=\"color: #333333\">LCB_SUCCESS<\/span><span class=\"p\">));<\/span><\/div>\n<div id=\"file-gistfile1-c-LC8\" class=\"line\"><\/div>\n<div id=\"file-gistfile1-c-LC9\" class=\"line\"><span class=\"p\">\u00a0 \u00a0 \u00a0 \u00a0 &#8230;<\/span><\/div>\n<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">No importa lo seguro que est\u00e9s, no puedes predecir todos los problemas que te puedes encontrar. Sin un mecanismo para comprobar errores, podr\u00edas pensar que Couchbase no funciona correctamente. Aseg\u00farate de comprobar los c\u00f3digos de error en tu aplicaci\u00f3n para saber por qu\u00e9 se producen los errores.\u00a0<\/span><\/p>\n<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">\u00a1Buena suerte construyendo tus aplicaciones en Couchbase!<\/span><\/p>","protected":false},"excerpt":{"rendered":"<p>Every app will eventually have to deal with an exception &#8211; runtime errors occur unexpectedly and your app must know how to deal with them and recover. It\u2019s always good when error handling is transparent to the end-user but at [&hellip;]<\/p>","protected":false},"author":4,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[9139,9407],"tags":[],"ppma_author":[8972],"class_list":["post-1619","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-python","category-ruby"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Handling Runtime Errors in Ruby, Python and C Clients<\/title>\n<meta name=\"description\" content=\"Learn what the different return codes mean in libCouchbase derived clients (Ruby, PHP, Python, C\/C++) and what your app should do when it encounters one.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/handling-runtime-errors-ruby-python-and-c-clients\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Handling Runtime Errors in Ruby, Python and C Clients\" \/>\n<meta property=\"og:description\" content=\"Learn what the different return codes mean in libCouchbase derived clients (Ruby, PHP, Python, C\/C++) and what your app should do when it encounters one.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/handling-runtime-errors-ruby-python-and-c-clients\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2014-12-18T14:20:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T04:10:57+00:00\" \/>\n<meta name=\"author\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Don Pinto, Principal Product Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/\"},\"author\":{\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c\"},\"headline\":\"Handling Runtime Errors in Ruby, Python and C Clients\",\"datePublished\":\"2014-12-18T14:20:07+00:00\",\"dateModified\":\"2025-06-14T04:10:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/\"},\"wordCount\":1198,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Python\",\"Ruby\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/\",\"name\":\"Handling Runtime Errors in Ruby, Python and C Clients\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2014-12-18T14:20:07+00:00\",\"dateModified\":\"2025-06-14T04:10:57+00:00\",\"description\":\"Learn what the different return codes mean in libCouchbase derived clients (Ruby, PHP, Python, C\/C++) and what your app should do when it encounters one.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Handling Runtime Errors in Ruby, Python and C Clients\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c\",\"name\":\"Don Pinto, Principal Product Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/39c6d6178c73f0dc09af63f930a4f37d\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g\",\"caption\":\"Don Pinto, Principal Product Manager, Couchbase\"},\"description\":\"Don Pinto is a Principal Product Manager at Couchbase and is currently focused on advancing the capabilities of Couchbase Server. He is extremely passionate about data technology, and in the past has authored several articles on Couchbase Server including technical blogs and white papers. Prior to joining Couchbase, Don spent several years at IBM where he maintained the role of software developer in the DB2 information management group and most recently as a program manager on the SQL Server team at Microsoft. Don holds a master's degree in computer science and a bachelor's in computer engineering from the University of Toronto, Canada.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/don-pinto\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Gesti\u00f3n de errores en tiempo de ejecuci\u00f3n en clientes Ruby, Python y C","description":"Learn what the different return codes mean in libCouchbase derived clients (Ruby, PHP, Python, C\/C++) and what your app should do when it encounters one.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/handling-runtime-errors-ruby-python-and-c-clients\/","og_locale":"es_MX","og_type":"article","og_title":"Handling Runtime Errors in Ruby, Python and C Clients","og_description":"Learn what the different return codes mean in libCouchbase derived clients (Ruby, PHP, Python, C\/C++) and what your app should do when it encounters one.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/handling-runtime-errors-ruby-python-and-c-clients\/","og_site_name":"The Couchbase Blog","article_published_time":"2014-12-18T14:20:07+00:00","article_modified_time":"2025-06-14T04:10:57+00:00","author":"Don Pinto, Principal Product Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Don Pinto, Principal Product Manager, Couchbase","Est. reading time":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/"},"author":{"name":"Don Pinto, Principal Product Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c"},"headline":"Handling Runtime Errors in Ruby, Python and C Clients","datePublished":"2014-12-18T14:20:07+00:00","dateModified":"2025-06-14T04:10:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/"},"wordCount":1198,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Python","Ruby"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/","url":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/","name":"Gesti\u00f3n de errores en tiempo de ejecuci\u00f3n en clientes Ruby, Python y C","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2014-12-18T14:20:07+00:00","dateModified":"2025-06-14T04:10:57+00:00","description":"Learn what the different return codes mean in libCouchbase derived clients (Ruby, PHP, Python, C\/C++) and what your app should do when it encounters one.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Handling Runtime Errors in Ruby, Python and C Clients"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/eb130a1e0278989e089a7fbbf8bc754c","name":"Don Pinto, Director Principal de Producto, Couchbase","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/39c6d6178c73f0dc09af63f930a4f37d","url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","caption":"Don Pinto, Principal Product Manager, Couchbase"},"description":"Don Pinto es Gerente Principal de Producto en Couchbase y actualmente est\u00e1 enfocado en avanzar las capacidades de Couchbase Server. Es un apasionado de la tecnolog\u00eda de datos, y en el pasado ha escrito varios art\u00edculos sobre Couchbase Server, incluyendo blogs t\u00e9cnicos y libros blancos. Antes de unirse a Couchbase, Don pas\u00f3 varios a\u00f1os en IBM, donde desempe\u00f1\u00f3 el papel de desarrollador de software en el grupo de gesti\u00f3n de la informaci\u00f3n DB2 y, m\u00e1s recientemente, como director de programa en el equipo de SQL Server en Microsoft. Don tiene un m\u00e1ster en inform\u00e1tica y una licenciatura en ingenier\u00eda inform\u00e1tica por la Universidad de Toronto, Canad\u00e1.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/don-pinto\/"}]}},"authors":[{"term_id":8972,"user_id":4,"is_guest":0,"slug":"don-pinto","display_name":"Don Pinto, Principal Product Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g","author_category":"","last_name":"Pinto, Principal Product Manager, Couchbase","first_name":"Don","job_title":"","user_url":"","description":"Don Pinto es Gerente Principal de Producto en Couchbase y actualmente est\u00e1 enfocado en avanzar las capacidades de Couchbase Server. Es un apasionado de la tecnolog\u00eda de datos, y en el pasado ha escrito varios art\u00edculos sobre Couchbase Server, incluyendo blogs t\u00e9cnicos y libros blancos. Antes de unirse a Couchbase, Don pas\u00f3 varios a\u00f1os en IBM, donde desempe\u00f1\u00f3 el papel de desarrollador de software en el grupo de gesti\u00f3n de la informaci\u00f3n DB2 y, m\u00e1s recientemente, como director de programa en el equipo de SQL Server en Microsoft. Don tiene un m\u00e1ster en inform\u00e1tica y una licenciatura en ingenier\u00eda inform\u00e1tica por la Universidad de Toronto, Canad\u00e1."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1619"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1619\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1619"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}