{"id":119,"date":"2023-04-04T03:19:29","date_gmt":"2023-04-04T03:19:29","guid":{"rendered":"https:\/\/canessaalvamiguel.dev\/?p=119"},"modified":"2023-04-04T03:20:46","modified_gmt":"2023-04-04T03:20:46","slug":"java-checked-and-unchecked-exceptions-exceptions","status":"publish","type":"post","link":"https:\/\/canessaalvamiguel.dev\/index.php\/2023\/04\/04\/java-checked-and-unchecked-exceptions-exceptions\/","title":{"rendered":"Java: Checked and Unchecked Exceptions"},"content":{"rendered":"\n<p>En Java, existen dos tipos de excepciones: las &#8220;checked exceptions&#8221; (excepciones comprobadas) y las &#8220;unchecked exceptions&#8221; (excepciones no comprobadas). En este art\u00edculo, vamos a explorar ambos tipos de excepciones y discutir sus ventajas y desventajas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Checked Exceptions<\/strong><\/h2>\n\n\n\n<p>Las &#8220;checked exceptions&#8221; son excepciones que deben ser manejadas en el momento en que se producen, de lo contrario, el c\u00f3digo no se compilar\u00e1. Son excepciones comprobadas por el compilador y obligan al programador a manejarlas de alguna manera.<\/p>\n\n\n\n<p>Algunos ejemplos de &#8220;checked exceptions&#8221; son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>IOException<\/code>: se lanza cuando ocurre un error de entrada\/salida.<\/li>\n\n\n\n<li><code>ClassNotFoundException<\/code>: se lanza cuando una clase no puede ser encontrada en tiempo de ejecuci\u00f3n.<\/li>\n\n\n\n<li><code>SQLException<\/code>: se lanza cuando se produce un error al acceder a una base de datos<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\ntry {\n  BufferedReader reader = new BufferedReader(new FileReader(&quot;archivo.txt&quot;));\n  String linea = reader.readLine();\n  \/\/ ...\n} catch (IOException e) {\n  \/\/ manejar la excepci\u00f3n\n}\n\n<\/pre><\/div>\n\n\n<p>Para manejar una &#8220;checked exception&#8221;, el programador debe incluir un bloque <code>try-catch<\/code> o declarar que el m\u00e9todo lanza esa excepci\u00f3n con la palabra clave <code>throws<\/code>. De esta manera, el compilador garantiza que todas las excepciones que puedan ser lanzadas dentro de un m\u00e9todo se manejen correctamente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ventajas de las Checked Exceptions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ayudan a detectar errores temprano: el hecho de que las excepciones sean comprobadas por el compilador obliga al programador a manejarlas en el momento en que se producen, lo que ayuda a detectar errores temprano en el ciclo de vida del software.<\/li>\n\n\n\n<li>Fuerzan a un manejo adecuado de excepciones: al requerir que las excepciones sean manejadas o declaradas, las &#8220;checked exceptions&#8221; obligan al programador a pensar en c\u00f3mo manejarlas adecuadamente y a proporcionar informaci\u00f3n clara sobre qu\u00e9 excepciones pueden ser lanzadas por un m\u00e9todo.<\/li>\n\n\n\n<li>Proporcionan documentaci\u00f3n \u00fatil: el hecho de que se requiera que las excepciones sean declaradas en la firma del m\u00e9todo, proporciona una documentaci\u00f3n \u00fatil para otros programadores que utilizan el m\u00e9todo.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Desventajas de las Checked Exceptions<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Aumentan la complejidad del c\u00f3digo: el manejo de &#8220;checked exceptions&#8221; puede aumentar la complejidad del c\u00f3digo, ya que se deben agregar bloques <code>try-catch<\/code> o declarar que el m\u00e9todo lanza la excepci\u00f3n.<\/li>\n\n\n\n<li>Pueden resultar en c\u00f3digo repetitivo: el manejo de &#8220;checked exceptions&#8221; puede resultar en c\u00f3digo repetitivo y tedioso, ya que se debe agregar el mismo bloque <code>try-catch<\/code> en varios lugares.<\/li>\n\n\n\n<li>No siempre es obvio qu\u00e9 hacer con ellas: a veces no est\u00e1 claro c\u00f3mo manejar una &#8220;checked exception&#8221;, lo que puede llevar a un manejo incorrecto o inadecuado.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Unchecked Exceptions<\/h2>\n\n\n\n<p>Las unchecked exceptions son excepciones que no se requiere que se manejen expl\u00edcitamente en el c\u00f3digo del programa. Estas excepciones se llaman &#8220;no comprobadas&#8221; porque el compilador de Java no comprueba si el c\u00f3digo est\u00e1 manejando estas excepciones o no. Las unchecked exceptions suelen ser errores que no se pueden recuperar, como <code>NullPointerException<\/code> o <code>IllegalArgumentException<\/code>.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: java; title: ; notranslate\" title=\"\">\nint&#x5B;] numeros = {1, 2, 3};\nint resultado = numeros&#x5B;5]; \/\/ esto arroja un ArrayIndexOutOfBoundsException (unchecked exception)\n<\/pre><\/div>\n\n\n<p>Las ventajas de utilizar unchecked exceptions incluyen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Reducen la complejidad del c\u00f3digo del programa al eliminar la necesidad de manejar excepciones en todos los lugares donde puedan ocurrir.<\/li>\n\n\n\n<li>Hacen que el c\u00f3digo sea m\u00e1s legible al no requerir un exceso de bloques try-catch.<\/li>\n<\/ul>\n\n\n\n<p>Sin embargo, las desventajas de las unchecked exceptions incluyen:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Pueden hacer que sea m\u00e1s dif\u00edcil depurar el c\u00f3digo cuando ocurren excepciones no esperadas.<\/li>\n\n\n\n<li>Pueden causar problemas de seguridad si se lanzan sin control.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p>En resumen, las checked exceptions son excepciones que se deben manejar expl\u00edcitamente en el c\u00f3digo del programa, mientras que las unchecked exceptions son excepciones que no se requiere que se manejen. Ambos tipos de excepciones tienen ventajas y desventajas, y es importante elegir el tipo de excepci\u00f3n adecuado para la situaci\u00f3n en cuesti\u00f3n. En general, se recomienda utilizar checked exceptions para situaciones en las que se espera que el programa se recupere de una excepci\u00f3n, y utilizar unchecked exceptions para situaciones en las que la excepci\u00f3n indica un error fatal<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En Java, existen dos tipos de excepciones: las &#8220;checked exceptions&#8221; (excepciones comprobadas) y las &#8220;unchecked exceptions&#8221; (excepciones no<\/p>\n","protected":false},"author":1,"featured_media":101,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[24,13,23],"class_list":["post-119","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java","tag-checked-exceptions","tag-java","tag-unchecked-exceptions"],"_links":{"self":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/119","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/comments?post=119"}],"version-history":[{"count":3,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/119\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/119\/revisions\/122"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media\/101"}],"wp:attachment":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media?parent=119"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/categories?post=119"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/tags?post=119"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}