Skip to content

Instantly share code, notes, and snippets.

@aboglioli
Created September 24, 2016 00:13
Show Gist options
  • Save aboglioli/4c410b9f71fd48892c4906492ae88b02 to your computer and use it in GitHub Desktop.
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.
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();
}
}
@marcelocattani
Copy link

Gracias muy claro.

@aboglioli
Copy link
Author

¡Me alegro de que te sirva!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment