{"id":2397,"date":"2018-02-23T05:41:43","date_gmt":"2018-02-23T10:41:43","guid":{"rendered":"https:\/\/www.manualjava.net\/?p=2397"},"modified":"2018-02-27T19:10:29","modified_gmt":"2018-02-28T00:10:29","slug":"manejo-de-excepciones-en-java","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=2397","title":{"rendered":"Manejo de excepciones en Java"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"wp-image-2425 alignnone\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/java38-300x96.jpg\" alt=\"\" width=\"291\" height=\"93\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/java38-300x96.jpg 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/02\/java38.jpg 396w\" sizes=\"(max-width: 291px) 100vw, 291px\" \/><\/p>\n<p><span style=\"color: #000000;\">Una excepci\u00f3n se \u00ablevanta\u00bb (raise) en caso de un error e indica una condici\u00f3n anormal que no se debe encontrar durante la ejecuci\u00f3n normal de c\u00f3digo. Una excepci\u00f3n indica una necesidad urgente de tomar una acci\u00f3n reparadora (de remedio).\u00a0<\/span><br \/>\n<!--more--><\/p>\n<p><span style=\"color: #000000;\">La palabra excepci\u00f3n indica aqu\u00ed una excepci\u00f3n software. No se debe confundir con una excepci\u00f3n hardware. Una excepci\u00f3n software se produce por una parte de c\u00f3digo escrita por un programador. No tiene nada que ver con las excepciones hardware. Una excepci\u00f3n software se inicia en alguna sentencia del c\u00f3digo que encuentra una condici\u00f3n anormal.<\/span><\/p>\n<p><span style=\"color: #000000;\">Una excepci\u00f3n es un error de programa que ocurre durante la ejecuci\u00f3n. Si ocurre una excepci\u00f3n y est\u00e1 activo un segmento de c\u00f3digo denominado\u00a0<strong>manejador de excepci\u00f3n\u00a0<\/strong>para esa excepci\u00f3n, entonces el flujo de control se transfiere al manejador. Si en lugar de ello ocurre una excepci\u00f3n y no existe un manejador para la excepci\u00f3n, \u00e9sta se propaga al m\u00e9todo invocante; si en \u00e9ste tampoco se capta la excepci\u00f3n se propaga al que a su vez le llam\u00f3; si llega al m\u00e9todo por el que empieza la ejecuci\u00f3n (main()) y tampoco es captada, la ejecuci\u00f3n termina.<\/span><\/p>\n<p><span style=\"color: #000000;\">Una excepci\u00f3n se puede levantar cuando \u00abel contrato\u00bb entre el\u00a0<strong>llamador y el llamado se violan.\u00a0<\/strong>Por ejemplo, si se intenta acceder a un elemento que est\u00e1 fuera del rango v\u00e1lido de un arreglo se produce una violaci\u00f3n del contrato entre el m\u00e9todo que controla los \u00edndices (operador [] en Java) y el llamador que utiliza el arreglo. La funci\u00f3n de \u00edndices garantiza que devuelve el elemento correspondiente si el \u00edndice que se le ha pasado es v\u00e1lido. Pero si el \u00edndice no es v\u00e1lido, la funci\u00f3n de \u00edndice debe indicar la condici\u00f3n de error. Siempre que se produzca tal violaci\u00f3n del contrato se debe levantar (alzar) una excepci\u00f3n. Una vez que se levanta una excepci\u00f3n, esta no desaparece aunque el programador lo ignore (una excepci\u00f3n no se puede ignorar ni suprimir). Una condici\u00f3n de excepci\u00f3n se debe reconocer y manejar. Una excepci\u00f3n no manejada se propagar\u00e1 din\u00e1micamente hasta alcanzar el nivel m\u00e1s alto de la funci\u00f3n (main en Java). Si tambi\u00e9n falla el nivel de funci\u00f3n m\u00e1s alto, la aplicaci\u00f3n termina sin opci\u00f3n posible.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Precauci\u00f3n<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">El manejo de errores usando excepciones no evita errores, solo permite la detecci\u00f3n y posible recuperaci\u00f3n de los mismos.<\/span><\/p>\n<p><span style=\"color: #000000;\">En general, el mecanismo de excepciones en Java permite:<\/span><\/p>\n<ol>\n<li><span style=\"color: #000000;\">Detecci\u00f3n de errores, en\u00e9rgica y posible recuperaci\u00f3n.<\/span><\/li>\n<li><span style=\"color: #000000;\">Limpieza y salida elegante en caso de errores no manejados; y<\/span><\/li>\n<li><span style=\"color: #000000;\">Propagaci\u00f3n sistem\u00e1tica de errores en una cadena de llamadas din\u00e1micas.<\/span><\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>Una excepci\u00f3n se \u00ablevanta\u00bb (raise) en caso de un error e indica una condici\u00f3n anormal que no se debe encontrar durante la ejecuci\u00f3n normal de c\u00f3digo. Una excepci\u00f3n indica una necesidad urgente de tomar una acci\u00f3n reparadora (de remedio).\u00a0<\/p><p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=2397\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2425,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[15],"tags":[],"_links":{"self":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2397"}],"collection":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2397"}],"version-history":[{"count":10,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2397\/revisions"}],"predecessor-version":[{"id":2446,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2397\/revisions\/2446"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/2425"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2397"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2397"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2397"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}