{"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\/pt\/handling-runtime-errors-ruby-python-and-c-clients\/","title":{"rendered":"Tratamento de erros de tempo de execu\u00e7\u00e3o em clientes Ruby, Python e C"},"content":{"rendered":"<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Todo aplicativo acabar\u00e1 tendo que lidar com uma exce\u00e7\u00e3o - erros de tempo de execu\u00e7\u00e3o ocorrem inesperadamente e seu aplicativo deve saber como lidar com eles e se recuperar. \u00c9 sempre bom quando o tratamento de erros \u00e9 transparente para o usu\u00e1rio final, mas, no m\u00ednimo, um bom tratamento de erros deve solucionar o problema, fornecer informa\u00e7\u00f5es suficientes ao usu\u00e1rio sobre o que fazer em seguida e encerrar o programa de forma elegante. Se voc\u00ea se esfor\u00e7ou muito para escrever seu aplicativo personalizado, por que deixar que um erro de tempo de execu\u00e7\u00e3o estrague tudo? <\/span><strong style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Este blog explica o que os diferentes c\u00f3digos de retorno significam nos clientes derivados da libCouchbase (Ruby, PHP, Python, C\/C++) e o que seu aplicativo deve fazer quando encontrar um deles<\/strong><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">.<\/span><\/p>\n<p>Os clientes do Couchbase s\u00e3o <strong>inteligente<\/strong>. Isso significa que eles s\u00e3o <strong>reconhecimento da topologia do cluster<\/strong> - se um n\u00f3 falhar, o cliente estar\u00e1 ciente disso. Se um novo n\u00f3 for adicionado ao cluster, o cliente tamb\u00e9m estar\u00e1 ciente desse novo n\u00f3. Em compara\u00e7\u00e3o com os clientes memcached, os clientes inteligentes oferecem melhor desempenho e disponibilidade durante as falhas, encaminhando automaticamente as solicita\u00e7\u00f5es para o servidor Couchbase correto.  Os clientes inteligentes s\u00e3o derivados de <a href=\"https:\/\/trondn.blogspot.ca\/2011\/10\/libcouchbase-explore-full-features-of.html\">libcouchbase<\/a> (Ruby, Python, Perl, node.js e PHP) ou s\u00e3o escritos em uma linguagem nativa, como Java e .NET. Este blog abordar\u00e1 os c\u00f3digos de erro retornados pelos clientes da libcouchbase.<\/p>\n<p>Os aplicativos usam APIs de clientes inteligentes para enviar solicita\u00e7\u00f5es ao Couchbase. O Couchbase escuta em 4<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/docs\/couchbase-manual-2.0\/couchbase-network-ports.html\/\">\u00a0portos<\/a> - 11210 (porta direta), 11211 (porta proxy), 8091 (console administrativo) e 8092 (exibi\u00e7\u00f5es do couchbase). Uma vez conectados, os clientes podem enviar um fluxo de solicita\u00e7\u00f5es na mesma conex\u00e3o com o servidor. As mensagens de solicita\u00e7\u00e3o normalmente incluem um cabe\u00e7alho bin\u00e1rio do memcached de 24 bytes e uma carga \u00fatil que \u00e9 opcional. O comprimento da carga \u00fatil \u00e9 especificado no cabe\u00e7alho. As muta\u00e7\u00f5es de documentos v\u00e3o primeiro para o cache gerenciado por objeto e, em seguida, s\u00e3o replicadas e persistidas de forma ass\u00edncrona. O Couchbase retorna um sucesso (0) ou uma falha (c\u00f3digo de erro diferente de zero) assim que o documento \u00e9 adicionado ao cache gerenciado por objeto. O c\u00f3digo de retorno indica o sucesso ou a falha geral da chamada \u00e0 API.<\/p>\n<p>\u00c9 uma boa pr\u00e1tica de programa\u00e7\u00e3o verificar os c\u00f3digos de erro em seu aplicativo para saber quando tentar novamente a solicita\u00e7\u00e3o ou lan\u00e7ar um erro de usu\u00e1rio. A tabela abaixo lista os c\u00f3digos de erro no Couchbase e sugere o que os clientes devem fazer se encontrarem um erro listado:<\/p>\n<p><strong>Se voc\u00ea estiver usando um cliente derivado da libCouchbase <\/strong>tais como\u00a0<span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Ruby, Python, Perl, node.js e PHP, a seguir est\u00e3o alguns dos c\u00f3digos de erro que voc\u00ea pode 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 erro recebido<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>O que isso significa?<\/strong><\/p>\n<\/td>\n<td>\n<p align=\"center\"><strong>O que o cliente deve fazer?<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>LCB_SUCCESS<\/td>\n<td>Opera\u00e7\u00e3o bem-sucedida<\/td>\n<td>N\u00e3o fazer nada. O Couchbase executou com \u00eaxito a solicita\u00e7\u00e3o do cliente.<\/td>\n<\/tr>\n<tr>\n<td>LCB_AUTH_ERROR<\/td>\n<td>Falha na autentica\u00e7\u00e3o. Nome de usu\u00e1rio ou senha inv\u00e1lidos foram fornecidos<\/td>\n<td>Verifique o nome de usu\u00e1rio e a senha fornecidos. Os clientes devem tentar novamente com o nome de usu\u00e1rio e a senha corretos.<\/td>\n<\/tr>\n<tr>\n<td>LCB_DELTA_BADVAL<\/p>\n<p>&nbsp;<\/td>\n<td>A opera\u00e7\u00e3o n\u00e3o pode ser executada com os argumentos solicitados.<\/td>\n<td>Verifique os argumentos e a opera\u00e7\u00e3o que est\u00e1 sendo executada nos argumentos.<\/p>\n<p><strong>Por exemplo: <\/strong>Incrementar um valor n\u00e3o num\u00e9rico usando o incr ou incrementar por um valor n\u00e3o num\u00e9rico<\/td>\n<\/tr>\n<tr>\n<td>LCB_E2BIG<\/td>\n<td>O servidor informou que o objeto \u00e9 muito grande<\/td>\n<td>O tamanho m\u00e1ximo da chave no Couchbase \u00e9 de 250 bytes. O tamanho m\u00e1ximo do documento no Couchbase \u00e9 de 20 Mb.<\/p>\n<p>&nbsp;<\/p>\n<p>O cliente deve tentar novamente e usar objetos com tamanhos dentro desses limites.<\/td>\n<\/tr>\n<tr>\n<td>LCB_EBUSY<\/td>\n<td>O servidor est\u00e1 muito ocupado para atender \u00e0s suas solicita\u00e7\u00f5es no momento.<\/td>\n<td>Use o backoff no c\u00f3digo do seu aplicativo e tente novamente a opera\u00e7\u00e3o ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_EINTERNAL<\/td>\n<td>H\u00e1 um erro interno na biblioteca.<\/td>\n<td>Destrua o contexto de conex\u00e3o e crie um novo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_EINVAL<\/td>\n<td>Argumentos inv\u00e1lidos especificados<\/td>\n<td>Certifique-se de passar os argumentos corretos<\/td>\n<\/tr>\n<tr>\n<td>LCB_ENOMEM<\/td>\n<td>O servidor est\u00e1 sem mem\u00f3ria<\/td>\n<td>Isso pode ocorrer durante a press\u00e3o da mem\u00f3ria, quando os documentos na mem\u00f3ria ainda n\u00e3o foram transferidos para o disco. Fa\u00e7a um backoff e tente novamente ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_RANGE<\/td>\n<td>Intervalo inv\u00e1lido especificado<\/td>\n<td>Certifique-se de ter especificado os intervalos adequados<\/td>\n<\/tr>\n<tr>\n<td>LCB_ETMPFAIL<\/td>\n<td>O servidor tentou executar a opera\u00e7\u00e3o, mas falhou devido a uma restri\u00e7\u00e3o tempor\u00e1ria<\/td>\n<td>Recuar e tentar novamente ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_KEY_EEXISTS<\/td>\n<td>A chave j\u00e1 existe (com outro valor CAS)<\/td>\n<td>As chaves s\u00e3o exclusivas no Couchbase. Tente outra chave.<\/td>\n<\/tr>\n<tr>\n<td>LCB_KEY_ENOENT<\/td>\n<td>A chave n\u00e3o existe<\/td>\n<td>A chave n\u00e3o foi encontrada. Tente procurar outra chave.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NETWORK_ERROR<\/td>\n<td>Ocorreu um problema relacionado \u00e0 rede<\/td>\n<td>Solucione o problema de sua rede e tente novamente.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NOT_MY_VBUCKET<\/td>\n<td>O servidor que recebeu essa solicita\u00e7\u00e3o n\u00e3o \u00e9 mais respons\u00e1vel por esse objeto. Isso acontece durante altera\u00e7\u00f5es na topologia do cluster ou no rebalanceamento.<\/td>\n<td>O cliente obt\u00e9m automaticamente um novo mapa de cluster do servidor e fica sabendo para onde deve enviar as solicita\u00e7\u00f5es subsequentes.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Na libcouchbase<\/strong>Esse erro n\u00e3o \u00e9 realmente exposto ao usu\u00e1rio. A biblioteca gerencia automaticamente a reconex\u00e3o com o servidor correto.<\/p>\n<p>&nbsp;<\/p>\n<p>Tente novamente a opera\u00e7\u00e3o ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NOT_STORED<\/td>\n<td>O objeto n\u00e3o foi armazenado no servidor<\/td>\n<td>Use o backoff no c\u00f3digo do seu aplicativo e tente novamente a opera\u00e7\u00e3o ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_NOT_SUPPORTED<\/td>\n<td>O servidor n\u00e3o \u00e9 compat\u00edvel com o comando solicitado.<\/td>\n<td>Verifique a solicita\u00e7\u00e3o enviada ao servidor.<\/td>\n<\/tr>\n<tr>\n<td>LCB_UNKNOWN_COMMAND<\/td>\n<td>O servidor n\u00e3o sabe qual \u00e9 o comando.<\/td>\n<td>Verifique a solicita\u00e7\u00e3o enviada ao servidor.<\/td>\n<\/tr>\n<tr>\n<td>LCB_UNKNOWN_HOST<\/td>\n<td>O servidor n\u00e3o conseguiu resolver o nome de host solicitado<\/td>\n<td>Verifique o nome do host especificado.<\/td>\n<\/tr>\n<tr>\n<td>LCB_PROTOCOL_ERROR<\/td>\n<td>H\u00e1 algo errado no fluxo de dados recebido pelo servidor<\/td>\n<td>O conjunto de resultados deve ser descartado e n\u00e3o deve ser usado. O cliente deve tentar novamente a opera\u00e7\u00e3o.<\/td>\n<\/tr>\n<tr>\n<td>LCB_ETIMEOUT<\/td>\n<td>A opera\u00e7\u00e3o do servidor atingiu o tempo limite<\/td>\n<td>Isso pode ocorrer se um servidor no cluster falhar e o Couchbase ainda tiver que detectar essa falha.<\/p>\n<p>O cliente deve tentar novamente ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_CONNECT_ERROR<\/td>\n<td>O cliente n\u00e3o conseguiu se conectar ao servidor solicitado<\/td>\n<td>O cliente deve tentar novamente ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_BUCKET_ENOINT<\/td>\n<td>O bucket solicitado n\u00e3o existe<\/td>\n<td>Verifique se o bucket existe no servidor e tente novamente.<\/td>\n<\/tr>\n<tr>\n<td>LCB_CLIENT_ENOMEM<\/td>\n<td>O cliente ficou sem mem\u00f3ria<\/td>\n<td>Isso pode ocorrer se os contextos de conex\u00e3o n\u00e3o forem liberados corretamente no lado do cliente. Destrua o contexto de conex\u00e3o atual e tente novamente.<\/td>\n<\/tr>\n<tr>\n<td>LCB_CLIENT_ETMPFAIL<\/td>\n<td>O cliente encontrou um erro tempor\u00e1rio.<\/td>\n<td>O aplicativo pode tentar novamente ap\u00f3s algum tempo.<\/td>\n<\/tr>\n<tr>\n<td>LCB_SERVER_BUG<\/td>\n<td>O uso inesperado do protocolo do servidor causou resultados inesperados.<\/td>\n<td>O conjunto de resultados deve ser descartado e n\u00e3o deve ser usado.<\/p>\n<p>&nbsp;<\/p>\n<p>O desenvolvedor deve registrar suas etapas para reproduzir o problema e <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/issues\/secure\/Dashboard.jspa\/\">registrar um bug<\/a>.<\/td>\n<\/tr>\n<tr>\n<td>LCB_INVALID_HOST_FORMAT<\/td>\n<td>A lista de hosts bootstrap usou um formato inv\u00e1lido\/n\u00e3o suportado.<\/td>\n<td>Verifique o formato do nome do host usado, corrija-o e tente novamente.<\/td>\n<\/tr>\n<tr>\n<td>LCB_INVALID_CHAR<\/td>\n<td>Caractere inv\u00e1lido usado no componente de caminho de um URL<\/td>\n<td>Verifique se o caminho do URL est\u00e1 codificado corretamente.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Depois de receber um c\u00f3digo de erro do Couchbase, os aplicativos podem converter esses c\u00f3digos em uma cadeia de caracteres - conforme mostrado no trecho de c\u00f3digo de exemplo abaixo, lcb_strerror() retorna uma cadeia de caracteres com termina\u00e7\u00e3o 0 que representa o erro.<\/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 ...<\/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\">sa\u00edda<\/span><span class=\"p\">,<\/span> <span class=\"s\" style=\"color: #dd1144\">\"A cadeia de caracteres textual para LCB_SUCCESS \u00e9: %s<\/span><span class=\"se\" style=\"color: #dd1144\">n<\/span><span class=\"s\" style=\"color: #dd1144\">\u201c<\/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 ...<\/span><\/div>\n<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Por mais confiante que voc\u00ea esteja, n\u00e3o \u00e9 poss\u00edvel prever todos os problemas que poder\u00e1 encontrar. Sem um mecanismo para verificar se h\u00e1 erros, voc\u00ea pode pensar que o Couchbase n\u00e3o funciona corretamente. Certifique-se de verificar os c\u00f3digos de erro em seu aplicativo para saber por que os erros ocorrem.\u00a0<\/span><\/p>\n<p><span style=\"font-family: inherit;font-size: 1em;line-height: 1.4375em\">Boa sorte na cria\u00e7\u00e3o de seus aplicativos no 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>\n","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"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\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\/pt\/handling-runtime-errors-ruby-python-and-c-clients\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/handling-runtime-errors-ruby-python-and-c-clients\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g39c6d6178c73f0dc09af63f930a4f37d\",\"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\\\/pt\\\/author\\\/don-pinto\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Tratamento de erros de tempo de execu\u00e7\u00e3o em clientes Ruby, Python e C","description":"Saiba o que significam os diferentes c\u00f3digos de retorno nos clientes derivados da libCouchbase (Ruby, PHP, Python, C\/C++) e o que seu aplicativo deve fazer quando encontrar um deles.","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\/pt\/handling-runtime-errors-ruby-python-and-c-clients\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"Tratamento de erros de tempo de execu\u00e7\u00e3o em clientes Ruby, Python e 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":"Saiba o que significam os diferentes c\u00f3digos de retorno nos clientes derivados da libCouchbase (Ruby, PHP, Python, C\/C++) e o que seu aplicativo deve fazer quando encontrar um deles.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/handling-runtime-errors-ruby-python-and-c-clients\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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, gerente principal de produtos da Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/574759a111515cb8c5d5a1f5268d2759050bd8383654dc0d9393324f0c35fae0?s=96&d=mm&r=g39c6d6178c73f0dc09af63f930a4f37d","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 \u00e9 gerente de produto principal da Couchbase e atualmente est\u00e1 concentrado no avan\u00e7o dos recursos do Couchbase Server. Ele \u00e9 extremamente apaixonado por tecnologia de dados e, no passado, foi autor de v\u00e1rios artigos sobre o Couchbase Server, incluindo blogs t\u00e9cnicos e white papers. Antes de ingressar no Couchbase, Don passou v\u00e1rios anos na IBM, onde ocupou a fun\u00e7\u00e3o de desenvolvedor de software no grupo de gerenciamento de informa\u00e7\u00f5es DB2 e, mais recentemente, como gerente de programa na equipe do SQL Server na Microsoft. Don tem mestrado em ci\u00eancia da computa\u00e7\u00e3o e \u00e9 bacharel em engenharia da computa\u00e7\u00e3o pela Universidade de Toronto, no Canad\u00e1.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/don-pinto\/"}]}},"acf":[],"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","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1619"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1619\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1619"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}