{"id":321,"date":"2014-02-28T15:22:55","date_gmt":"2014-02-28T15:22:55","guid":{"rendered":"http:\/\/marcio.belo.nom.br\/?p=321"},"modified":"2014-02-28T15:22:55","modified_gmt":"2014-02-28T15:22:55","slug":"tratamento-generico-de-excecoes-em-threads","status":"publish","type":"post","link":"https:\/\/marcio.belo.nom.br\/wordpress\/2014\/02\/28\/tratamento-generico-de-excecoes-em-threads\/","title":{"rendered":"Tratamento Gen\u00e9rico de Exce\u00e7\u00f5es em Threads"},"content":{"rendered":"<p>\u00c9 comum em softwares que rodam em servidor implementar-se algo conhecido como uma barreira de exce\u00e7\u00f5es: se durante a execu\u00e7\u00e3o de um c\u00f3digo, uma exce\u00e7\u00e3o n\u00e3o esperada ocorre e n\u00e3o h\u00e1 nenhum tratamento preparado, a exce\u00e7\u00e3o \u00e9 propagada at\u00e9 o bootstrapper da JVM que a &#8220;cospe&#8221; no console. Evita-se isso colocando um n\u00edvel de indire\u00e7\u00e3o logo ap\u00f3s o bootstrapper que captura qualquer Throwable, dando um tratamento gen\u00e9rico \u00e0 exce\u00e7\u00e3o, mas evitando &#8211; dependendo do caso &#8211; que a aplica\u00e7\u00e3o aborte.<\/p>\n<p>No caso de Threads isso \u00e9 um pouco mais complicado. Como cada Thread ganha vida pr\u00f3pria n\u00e3o h\u00e1 onde colocar a barreira para caso ela dispare uma exce\u00e7\u00e3o. Nesse artigo de Eric Bruno, publicado na Dr.Dobbs, ele aborda como o Java nos permite configurar tratadores para exce\u00e7\u00f5es ocorridas em Threads. Boa Leitura:<\/p>\n<p>&nbsp;<\/p>\n<h1><a href=\"http:\/\/www.drdobbs.com\/jvm\/uncaught-java-thread-exceptions\/240148320#\" target=\"_blank\">Uncaught Java Thread Exceptions<\/a><\/h1>\n<p><span style=\"font-size: x-large;\">\u00a0<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u00c9 comum em softwares que rodam em servidor implementar-se algo conhecido como uma barreira de exce\u00e7\u00f5es: se durante a execu\u00e7\u00e3o de um c\u00f3digo, uma exce\u00e7\u00e3o n\u00e3o esperada ocorre e n\u00e3o h\u00e1 nenhum tratamento preparado, a exce\u00e7\u00e3o \u00e9 propagada at\u00e9 o bootstrapper da JVM que a &#8220;cospe&#8221; no console. Evita-se isso colocando um n\u00edvel de indire\u00e7\u00e3o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-321","post","type-post","status-publish","format-standard","hentry","category-java"],"_links":{"self":[{"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/posts\/321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/comments?post=321"}],"version-history":[{"count":1,"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/posts\/321\/revisions"}],"predecessor-version":[{"id":322,"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/posts\/321\/revisions\/322"}],"wp:attachment":[{"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/media?parent=321"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/categories?post=321"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/marcio.belo.nom.br\/wordpress\/wp-json\/wp\/v2\/tags?post=321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}