{"id":2581,"date":"2018-03-03T19:53:10","date_gmt":"2018-03-04T00:53:10","guid":{"rendered":"https:\/\/www.manualjava.net\/?p=2581"},"modified":"2018-03-05T22:08:28","modified_gmt":"2018-03-06T03:08:28","slug":"clases-de-excepciones-definidas-en-java","status":"publish","type":"post","link":"https:\/\/www.manualjava.net\/?p=2581","title":{"rendered":"Clases de excepciones definidas en Java"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-2584\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/java44-300x73.jpg\" alt=\"\" width=\"296\" height=\"72\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/java44-300x73.jpg 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/java44.jpg 410w\" sizes=\"(max-width: 296px) 100vw, 296px\" \/><\/p>\n<p><span style=\"color: #000000;\">El lenguaje Java pretende estandarizar el manejo de excepciones y por ello declara un amplio conjunto de clases de excepciones. Estas clases forman una jerarqu\u00eda de clases, en la que la clase base es\u00a0<strong>Throwable,\u00a0<\/strong>que deriva directamente de la superclase base Object.\u00a0<\/span><!--more--><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-2621 aligncenter\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/Excepci\u00f3n-2-300x186.png\" alt=\"\" width=\"393\" height=\"244\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/Excepci\u00f3n-2-300x186.png 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/Excepci\u00f3n-2.png 533w\" sizes=\"(max-width: 393px) 100vw, 393px\" \/><\/p>\n<p><span style=\"color: #000000;\">De\u00a0<strong>Throwable\u00a0<\/strong>derivan dos clases:\u00a0<strong>Error y Exception.\u00a0<\/strong>Las excepciones del tipo Error son generadas por el sistema, se puede decir que se trata de errores irrecuperables; adem\u00e1s es extra\u00f1o que se produzcan, por ejemplo, \u00absalir de la memoria de la m\u00e1quina virtual\u00bb; por lo tanto, de producirse una excepci\u00f3n Error se propagar\u00e1 hasta salir por el m\u00e9todo main(). Los nombres de las subclases que derivan de Error acaban con el sufijo Error, asi\u00a0<strong>InternalError o NoClassDefFoundError.<\/strong><\/span><\/p>\n<p><span style=\"color: #000000;\">De la clase Exception derivan clases de las que se instancian objetos (excepciones) para ser lanzados (throw), que pueden ser capturados por los correspondientes catch. Las clases derivadas de Exception se encuentran en los diversos paquetes de Java, todas tienen como nombre un identificador que indica su finalidad, terminado en Exception. La jerarqu\u00eda de excepciones a partir de la base Exception:<\/span><\/p>\n<p><img decoding=\"async\" loading=\"lazy\" class=\" wp-image-2631 aligncenter\" src=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/Excepcion3-300x175.png\" alt=\"\" width=\"415\" height=\"242\" srcset=\"https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/Excepcion3-300x175.png 300w, https:\/\/www.manualjava.net\/wp-content\/uploads\/2018\/03\/Excepcion3.png 591w\" sizes=\"(max-width: 415px) 100vw, 415px\" \/><\/p>\n<h2><span style=\"color: #000000;\"><strong>RuntimeException<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Hay excepciones que se propagan autom\u00e1ticamente por los m\u00e9todos sin necesidad de especificarlas en la cabecera con\u00a0<strong>throws.\u00a0<\/strong>Todas las excepciones del tipo RuntimeException (divisi\u00f3n por cero, \u00edndice fuera de rango. . .) son de ese tipo. Ser\u00eda muy tedioso especificar en todos los m\u00e9todos que se puede propagar una excepci\u00f3n de, por ejemplo, divisi\u00f3n por cero, y por ello Java las propaga sin tener que especificar ese hecho. El m\u00e9todo histog() de la clase ConHisto, tiene una expresi\u00f3n aritm\u00e9tica en la que puede producirse una excepci\u00f3n debido a una divisi\u00f3n por cero. La excepci\u00f3n se propaga y se capta en main().<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class ConHisto {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static int histog(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0int k, r, z;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0z=0; k=9;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0while(k&gt;1){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0r = (int)(Math.random()*13);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.print(\u00abr = \u00bb + r);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0z = z+r+(2*r)\/(r-k);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00bb \u00bb +\u00bbz = \u00bb + z);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0k\u2013\u2013;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0return z;<\/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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static public void main(String[] args){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0try{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abBloque try. Llamada a histog()\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0histog();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0catch(ArithmeticException a){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00ab\\tCaptura de excepci\u00f3n: \u00bb + a);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0catch(RuntimeException r){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00ab\\tCaptura de excepci\u00f3n: \u00bb + r);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \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 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<p><span style=\"color: #000000;\">Una ejecuci\u00f3n (al depender de los n\u00fameros aleatorios no siempre se genera excepci\u00f3n) da lugar a esta salida:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Bloque try. Llamada a histog()<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0r = 8\u00a0 \u00a0 \u00a0 \u00a0z = -8<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0r = 2\u00a0 \u00a0 \u00a0 \u00a0z = -6<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0r = 11\u00a0 \u00a0 z = 10<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0r = 6\u00a0 \u00a0 \u00a0 \u00a0Captura de excepci\u00f3n: <strong>java.lang.ArithmeticException: \/ by zero<\/strong><\/span><\/p>\n<p><span style=\"color: #000000;\">Al tomar r el valor 6 y k tambi\u00e9n 6 el programa detecta una\u00a0<strong>divisi\u00f3n por cero\u00a0<\/strong>y lanza la excepci\u00f3n. El m\u00e9todo histog() no la captura, por lo que se propaga y alcanza main() que si la captura.<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>Excepciones comprobadas<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">Los m\u00e9todos en los que se lanzan excepciones, bien directamente con throw, o bien porque llaman a otro m\u00e9todo que propaga una excepci\u00f3n, deben comprobar, verificar, la excepci\u00f3n con el apropiado try-catch, si no la excepci\u00f3n se propaga. Esto exige que en la cabecera del m\u00e9todo, con la cl\u00e1usula throws se especifiquen los tipos de excepci\u00f3n que permite que sean propagados. Por ejemplo, el m\u00e9todo readLine() de la clase BufferedReader puede lanzar la excepci\u00f3n del tipo IOException, en el caso de tratarla hay que especificar su propagaci\u00f3n.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 BufferedReader entrada = new BufferedReader(new InputStreamReader(System.in));<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0int entradaRango(){\u00a0 \u00a0 \u00a0 <strong>\u00a1\u00a1 error !!<\/strong><\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 int d;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 do{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 d = Integer.parseInt(entrada.readLine());<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }while(d&lt;=0||d&gt;=10);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 return d;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0}<\/span><\/p>\n<p><span style=\"color: #000000;\">El m\u00e9todo entradaRango() tiene un error, error en tiempo de compilaci\u00f3n. Se debe a que readLine() est\u00e1 implementado con esta cabecera:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 String readLine() throws IOException<\/span><\/p>\n<p><span style=\"color: #000000;\">Sin embargo entradaRango() no tiene un bloque try-catch para tratar la posible excepci\u00f3n, ni tampoco especifica que se puede propagar, lo cual es un error en Java. La forma de evitar el error es especificando la propagaci\u00f3n de la excepci\u00f3n:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 int entradaRango() throws IOException<\/span><\/p>\n<p><span style=\"color: #000000;\">o bien capturarla. La propagaci\u00f3n puede llegar al m\u00e9todo main(), hay que capturarla. Tambi\u00e9n est\u00e1 la opci\u00f3n de no capturarla y poner: main() throws IOException, aunque esto no es una pr\u00e1ctica recomendada.<\/span><\/p>\n<p><span style=\"color: #000000;\">En el ejemplo aparece una llamada al m\u00e9todo parseInt(), que puede generar la excepci\u00f3n NumberFormatException del tipo RuntimeException que no es necesario especificar su propagaci\u00f3n. Las excepciones del tipo RuntimeException no hay que especificarlas.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Precauci\u00f3n<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">Es error de compilaci\u00f3n no capturar las excepciones que propaga un m\u00e9todo, o no especificar que se propagar\u00e1 una excepci\u00f3n. Java permite que en excepciones de la jerarqu\u00eda que tiene como base RuntimeException no se especifique su propagaci\u00f3n.<\/span><\/p>\n<h2><span style=\"color: #000000;\"><strong>M\u00e9todos que informan de la excepci\u00f3n<\/strong><\/span><\/h2>\n<p><span style=\"color: #000000;\">La clase Exception tiene dos constructores, uno sin argumentos (constructor de manera predeterminada) y el otro con un argumento que se corresponde con una cadena de caracteres.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 Exception();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 Exception(String m);<\/span><\/p>\n<p><span style=\"color: #000000;\">Por lo que se puede lanzar la excepci\u00f3n con una cadena informativa:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 throw new Exception(\u00abError de lectura de archivo\u00bb);<\/span><\/p>\n<p><span style=\"color: #000000;\">El m\u00e9todo getMessage() devuelve una cadena que contiene la descripci\u00f3n de la excepci\u00f3n, es la cadena pasada como argumento al constructor; su prototipo es:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 String getMessage();<\/span><\/p>\n<p><span style=\"color: #000000;\">A continuaci\u00f3n se escribe un ejemplo en el que el m\u00e9todo primero() llama a lotes(), que lanza una excepci\u00f3n; es capturada y se imprime el mensaje con el que fue construida.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 void lotes() throws Exception{<\/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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0throw new Exception(\u00abDefecto en el producto.\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 void primero(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0try{<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0lotes();<\/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 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0catch(Exception mensaje){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(mensaje.getMessage());<\/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 }<\/span><\/p>\n<p><span style=\"color: #000000;\"><strong>El m\u00e9todo printStackTrace()<\/strong> resulta muy \u00fatil para conocer la secuencia de llamadas a m\u00e9todos realizadas hasta que llega al m\u00e9todo donde se ha producido el problema, donde se ha lanzado la excepci\u00f3n. El propio nombre, printStackTrace(), ya indica su finalidad: escribir la cadena con que se inicializa el objeto excepci\u00f3n (si no se ha utilizado el constructor de manera predeterminada) y a continuaci\u00f3n la identificaci\u00f3n de la excepci\u00f3n junto al nombre de los m\u00e9todos por donde se ha ido propagando.<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Ejemplo<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">Se va a generar una excepci\u00f3n de divisi\u00f3n por cero. La excepci\u00f3n no es capturada por lo que se pierde en el m\u00e9todo main() y termina la ejecuci\u00f3n. En pantalla se muestra la traza de llamadas a los m\u00e9todos que ha acabado con una excepci\u00f3n RuntimeException.<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0public class ExcepcionAritmetica {<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static void atime(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0int k, r;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0r = (int)Math.random();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abM\u00e9todo atime\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0k = 2\/r;<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static void batime(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abM\u00e9todo batime\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0atime();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static void zatime(){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abM\u00e9todo zatime\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0batime();<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 static public void main(String[] args){<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0System.out.println(\u00abEntrada al programa, main()\u00bb);<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0zatime();<\/span><br \/>\n<span style=\"color: #000000;\">\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;\">La ejecuci\u00f3n muestra por pantalla:<\/span><\/p>\n<p><span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Entrada al programa, main()<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0M\u00e9todo zatime<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0M\u00e9todo batime<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0M\u00e9todo atime<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0Exception in thread \u00abmain\u00bb java.lang.ArithmeticException:\u00a0 \u00a0 \/ by zero<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0at excepcionaritmetica.ExcepcionAritmetica.atime(ExcepcionAritmetica.java:8)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0at excepcionaritmetica.ExcepcionAritmetica.batime(ExcepcionAritmetica.java:12)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0at excepcionaritmetica.ExcepcionAritmetica.zatime(ExcepcionAritmetica.java:16)<\/span><br \/>\n<span style=\"color: #000000;\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0at excepcionaritmetica.ExcepcionAritmetica.main(ExcepcionAritmetica.java:20)<\/span><\/p>\n<h3><span style=\"color: #000000;\"><strong>Nota<\/strong><\/span><\/h3>\n<p><span style=\"color: #000000;\">Una excepci\u00f3n que no es capturada por ninguno de los m\u00e9todos donde se propaga, llegando al m\u00e9todo main(), termina la ejecuci\u00f3n y hace internamente una llamada a printStackTrace() que visualiza la ruta de llamadas a m\u00e9todos y los n\u00fameros de l\u00ednea.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El lenguaje Java pretende estandarizar el manejo de excepciones y por ello declara un amplio conjunto de clases de excepciones. Estas clases forman una jerarqu\u00eda de clases, en la que la clase base es\u00a0Throwable,\u00a0que deriva directamente de la superclase base Object.\u00a0<\/p><p><a class=\"more-link btn\" href=\"https:\/\/www.manualjava.net\/?p=2581\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2584,"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\/2581"}],"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=2581"}],"version-history":[{"count":38,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2581\/revisions"}],"predecessor-version":[{"id":2667,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/posts\/2581\/revisions\/2667"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=\/wp\/v2\/media\/2584"}],"wp:attachment":[{"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manualjava.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}