{"id":2653,"date":"2018-03-05T12:48:49","date_gmt":"2018-03-05T17:48:49","guid":{"rendered":"https:\/\/www.manualjava.net\/?p=2653"},"modified":"2018-03-05T22:52:35","modified_gmt":"2018-03-06T03:52:35","slug":"nuevas-clases-de-excepciones","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=2653","title":{"rendered":"Nuevas clases de excepciones"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-2668\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/java45-300x98.png\" alt=\"\" width=\"291\" height=\"95\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/java45-300x98.png 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/java45.png 339w\" sizes=\"(max-width: 291px) 100vw, 291px\" \/><\/p>\n<p><span style=\"color: #000000;\">Las clases de excepciones que define Java pueden ser ampliadas en las aplicaciones. Se pueden definir nuevas clases de excepciones para que as\u00ed las aplicaciones tengan su espec\u00edfico control de errores. Las clases que se definan tienen que derivar de la clase base Exception, o bien directa o indirectamente.\u00a0<\/span><!--more--><\/p>\n<h3><strong><span style=\"color: #000000;\">Ejemplo<\/span><\/strong><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class MiExcepcion extends Exception{. . .}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class ArrayExcepcion extends NegativeArraySizeException{. . .}<\/span><\/p>\n<p><span style=\"color: #000000;\">Es habitual que la clase que se define tenga un constructor con un argumento cadena en el que se puede dar informaci\u00f3n sobre la anomal\u00eda generada. En ese caso, a trav\u00e9s de super se llama al constructor de la clase base Exception.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class MiExcepcion extends Exception{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 public MiExcepcion(String info){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 super(info);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(\u00abConstructor de la clase.\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<p><span style=\"color: #000000;\">Las clases que definen las excepciones pueden tener cualquier tipo de atributo o m\u00e9todo que ayude al manejo de la anomal\u00eda que representan. La siguiente clase guarda el tama\u00f1o con que se ha intentado dar tama\u00f1o a un array.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class ArrayExcepcion extends NegativeArraySizeException{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0int n;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0public ArrayExcepcion(String mensaje, int t){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0super(mensaje);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0n=t;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0public String Informa(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0return getMessage()+n;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<p><span style=\"color: #000000;\">Se pueden lanzar excepciones de tipo definido en las aplicaciones, por ejemplo:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int tama\u00f1o;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0int []v;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0tama\u00f1o = entrada.nextInt();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0if(tama\u00f1o&lt;=0)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 throw new ArrayExcepcion(\u00abTama\u00f1o incorrecto: \u00bb + tama\u00f1o);<\/span><\/p>\n<p><span style=\"color: #000000;\">En aplicaciones complejas que lo requieren se puede definir una jerarqu\u00eda propia de clases de excepciones, siempre la clase base ha de ser Exception. El siguiente esquema muestra una jerarqu\u00eda para la aplicaci\u00f3n Cajero:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class CajeroException extends Exception{. . .}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class CuentaException extends CajeroException{. . .}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class LibretaException extends CajeroException{. . .}<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class CuentaCorrienteException extends CuentaException{. . .}<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Las clases de excepciones que define Java pueden ser ampliadas en las aplicaciones. Se pueden definir nuevas clases de excepciones para que as\u00ed las aplicaciones tengan su espec\u00edfico control de errores. Las clases que se definan tienen que derivar de la clase base Exception, o bien directa o indirectamente.\u00a0<\/p><p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=2653\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2668,"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\/2653"}],"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=2653"}],"version-history":[{"count":15,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2653\/revisions"}],"predecessor-version":[{"id":2682,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2653\/revisions\/2682"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/2668"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2653"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2653"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2653"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}