Created
September 24, 2016 00:13
-
-
Save aboglioli/4c410b9f71fd48892c4906492ae88b02 to your computer and use it in GitHub Desktop.
Ejemplo de lanzar una excepción con throw, relanzar con throws y atrapar la excepción con catch. En Java.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class C { | |
/** | |
* throws me sirve para indicar en un método que este es capaz de lanzar una | |
* Exception del tipo declarado después de 'throws'. En este caso, este método | |
* es capaz de lanzar una excpeción del tipo Exception (padre de todas las | |
* excepciones). | |
*/ | |
public void lanzaExcepcion() throws Exception { | |
throw new Exception("Se rompio todo"); | |
} | |
} | |
class B { | |
private C c; | |
public B() { | |
this.c = new C(); | |
} | |
/** | |
* Acá 'throws' se usa para indicar que este método también es capaz de | |
* lanzar una excpeción. En este caso no crea y lanza una excepción, sino que | |
* relanza la excpecion que viene desde C al llamar a "lanzaExcepcion()". | |
*/ | |
public void relanzaExcepcion() throws Exception { | |
// C me lanza una Excepción pero acá no estoy usando try-catch, no hay nada | |
// que la atrape. Mejor dejo que A se encargue de atrapar la Excepción. | |
// Mediante 'throws' relanzo la excepción un nivel más arriba. Quien llame a | |
// este método tendrá que encargarse de atraparla. | |
this.c.lanzaExcepcion(); | |
} | |
} | |
class A { | |
private B b; | |
public A() { | |
this.b = new B(); | |
} | |
public void dondeAtrapoLaExcepcion() { | |
try { | |
b.relanzaExcepcion(); | |
} | |
catch(Exception e) { | |
System.out.println("Excepcion papu: " + e.getMessage()); | |
} | |
} | |
} | |
public class EjemploExcepcion { | |
public static void main(String[] args) { | |
A hola = new A(); | |
hola.dondeAtrapoLaExcepcion(); | |
} | |
} |
¡Me alegro de que te sirva!
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Gracias muy claro.