From c7776a9137051a3d8f20568bd2ad6c29c90bba8d Mon Sep 17 00:00:00 2001 From: devfzn Date: Thu, 6 Jul 2023 16:04:04 -0400 Subject: [PATCH] Jva Excepciones: Fin --- .../src/bytebank_excep/Administrador.java | 26 +++ .../src/bytebank_excep/Autenticable.java | 9 + .../src/bytebank_excep/AutenticacionUtil.java | 14 ++ .../src/bytebank_excep/Cliente.java | 46 ++++ .../src/bytebank_excep/Contador.java | 10 + .../bytebank_excep/ControlBonificacion.java | 10 + .../src/bytebank_excep/Cuenta.java | 73 +++++++ .../src/bytebank_excep/CuentaAhorro.java | 12 ++ .../src/bytebank_excep/CuentaCorriente.java | 19 ++ .../src/bytebank_excep/Funcionario.java | 42 ++++ .../src/bytebank_excep/Gerente.java | 29 +++ .../SaldoInsuficienteExcepction.java | 7 + .../src/bytebank_excep/SistemaInterno.java | 19 ++ .../TestCuentaExceptionSaldo.java | 33 +++ .../bytebank_excep/src/module-info.java | 2 + .../src/pila_ejecucion/Conexion.java | 23 ++ .../src/pila_ejecucion/Cuenta.java | 7 + .../src/pila_ejecucion/TestConexion.java | 27 +++ .../TestCuentaExceptionChecked.java | 16 ++ 008_java_oo/excepciones.md | 200 ++++++++++++++++++ README.md | 3 + 21 files changed, 627 insertions(+) create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Administrador.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Autenticable.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/AutenticacionUtil.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cliente.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Contador.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/ControlBonificacion.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cuenta.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaAhorro.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaCorriente.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Funcionario.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Gerente.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SaldoInsuficienteExcepction.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SistemaInterno.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/TestCuentaExceptionSaldo.java create mode 100644 008_java_oo/eclipse/bytebank_excep/src/module-info.java create mode 100644 008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Conexion.java create mode 100644 008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Cuenta.java create mode 100644 008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestConexion.java create mode 100644 008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestCuentaExceptionChecked.java diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Administrador.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Administrador.java new file mode 100644 index 0000000..fc8ff9e --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Administrador.java @@ -0,0 +1,26 @@ +package bytebank_excep; + +public class Administrador extends Funcionario implements Autenticable { + + private AutenticacionUtil util; + + public Administrador() { + this.util = new AutenticacionUtil(); + } + + @Override + public double getBonificacion() { + return this.getSalario(); + } + + @Override + public void setClave(String clave) { + this.util.setClave(clave); + } + + @Override + public boolean inicioSesion(String clave) { + return this.util.inicioSesion(clave); + } + +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Autenticable.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Autenticable.java new file mode 100644 index 0000000..dc8cb68 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Autenticable.java @@ -0,0 +1,9 @@ +package bytebank_excep; + +public interface Autenticable { + + public void setClave(String clave); + + public boolean inicioSesion(String clave); + +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/AutenticacionUtil.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/AutenticacionUtil.java new file mode 100644 index 0000000..bf97b7b --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/AutenticacionUtil.java @@ -0,0 +1,14 @@ +package bytebank_excep; + +public class AutenticacionUtil { + + private String clave; + + public boolean inicioSesion(String clave) { + return this.clave == clave; + } + + public void setClave(String clave) { + this.clave = clave; + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cliente.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cliente.java new file mode 100644 index 0000000..50b2b6f --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cliente.java @@ -0,0 +1,46 @@ +package bytebank_excep; + +public class Cliente implements Autenticable { + private String nombre; + private String documento; + private String telefono; + private AutenticacionUtil util; + + public Cliente() { + this.util = new AutenticacionUtil(); + } + + public String getNombre() { + return nombre; + } + + public void setNombre(String nombre) { + this.nombre = nombre; + } + + public String getDocumento() { + return documento; + } + + public void setDocumento(String documento) { + this.documento = documento; + } + + public String getTelefono() { + return telefono; + } + + public void setTelefono(String telefono) { + this.telefono = telefono; + } + + @Override + public void setClave(String clave) { + this.util.setClave(clave); + } + + @Override + public boolean inicioSesion(String clave) { + return this.util.inicioSesion(clave); + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Contador.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Contador.java new file mode 100644 index 0000000..e04174b --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Contador.java @@ -0,0 +1,10 @@ +package bytebank_excep; + +public class Contador extends Funcionario { + + @Override + public double getBonificacion() { + return 200.0; + } + +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/ControlBonificacion.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/ControlBonificacion.java new file mode 100644 index 0000000..eb8ea2b --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/ControlBonificacion.java @@ -0,0 +1,10 @@ +package bytebank_excep; + +public class ControlBonificacion { + private double suma_bonific; + + public double registrarSalario(Funcionario funcionario) { + System.out.println(this.suma_bonific); + return this.suma_bonific += funcionario.getBonificacion(); + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cuenta.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cuenta.java new file mode 100644 index 0000000..86d2f59 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Cuenta.java @@ -0,0 +1,73 @@ +package bytebank_excep; + +public abstract class Cuenta { + protected double saldo; + private int agencia; + private int numero; + private Cliente titular = new Cliente(); + private static int contador = 0; + + public Cuenta(int agencia, int numero) { + if (agencia <= 0) { + System.out.println("No se permiten valores negativos"); + this.agencia = 1; + } else { + this.agencia = agencia; + } + this.numero = numero; + contador++; + System.out.println("Cuentas creadas: "+contador); + } + + public abstract void depositar(double valorDeposito); + + public void retirar(double valorRetiro) throws SaldoInsuficienteExcepction { + if (this.saldo < valorRetiro) { + throw new SaldoInsuficienteExcepction("Saldo insuficiente"); + } + this.saldo -= valorRetiro; + } + + public boolean transferir(double montoTransferencia, Cuenta cuenta) throws SaldoInsuficienteExcepction{ + if (this.saldo >= montoTransferencia) { + try { + this.retirar(montoTransferencia); + } catch (SaldoInsuficienteExcepction e) { + e.printStackTrace(); + } + cuenta.depositar(montoTransferencia); + return true; + } else { + throw new SaldoInsuficienteExcepction("Saldo insuficiente\nSaldo : $ "+ + this.saldo+"\nRetiro: $ "+montoTransferencia); + } + } + + public double getSaldo() { + return this.saldo; + } + + public int getAgencia(){ + return this.agencia; + } + + public void setNumero(int numero){ + this.numero = numero; + } + + public int getNumero(){ + return this.numero; + } + + public void setTitular(Cliente titular){ + this.titular = titular; + } + + public Cliente getTitular(){ + return titular; + } + + public static int getContador(){ + return Cuenta.contador; + } +} \ No newline at end of file diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaAhorro.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaAhorro.java new file mode 100644 index 0000000..a602006 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaAhorro.java @@ -0,0 +1,12 @@ +package bytebank_excep; + +public class CuentaAhorro extends Cuenta { + public CuentaAhorro(int agencia, int numero) { + super(agencia, numero); + } + + @Override + public void depositar(double valorDeposito) { + this.saldo += valorDeposito; + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaCorriente.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaCorriente.java new file mode 100644 index 0000000..a5b1b11 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/CuentaCorriente.java @@ -0,0 +1,19 @@ +package bytebank_excep; + +public class CuentaCorriente extends Cuenta { + public CuentaCorriente(int agencia, int numero) { + super(agencia, numero); + } + + @Override + public void retirar(double valorRetiro) throws SaldoInsuficienteExcepction { + double comision = 0.2; + System.out.println("Ejecutando retiro sobreescrito"); + super.retirar( valorRetiro + comision ); + } + + @Override + public void depositar(double valorDeposito) { + this.saldo += valorDeposito; + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Funcionario.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Funcionario.java new file mode 100644 index 0000000..85f2624 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Funcionario.java @@ -0,0 +1,42 @@ +package bytebank_excep; + +public abstract class Funcionario { + + private String nombre; + private String documento; + private Double salario; + private int tipo; + + public Funcionario() { + } + + public String getNombre() { + return nombre; + } + public void setNombre(String nombre) { + this.nombre = nombre; + } + public String getDocumento() { + return documento; + } + public void setDocumento(String documento) { + this.documento = documento; + } + public Double getSalario() { + return salario; + } + public void setSalario(Double salario) { + this.salario = salario; + } + + public int getTipo() { + return tipo; + } + + public void setTipo(int tipo) { + this.tipo = tipo; + } + + public abstract double getBonificacion(); + +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Gerente.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Gerente.java new file mode 100644 index 0000000..34d6e56 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/Gerente.java @@ -0,0 +1,29 @@ +package bytebank_excep; + +public class Gerente extends Funcionario implements Autenticable { + + private AutenticacionUtil util; + + public Gerente() { + this.util = new AutenticacionUtil(); + } + + //public void setNombre(String nombre){ + // super.setNombre(nombre); + //} + + public double getBonificacion() { + return super.getSalario() + (this.getSalario() * 0.5); + } + + @Override + public void setClave(String clave) { + this.util.setClave(clave); + } + + + @Override + public boolean inicioSesion(String clave) { + return this.util.inicioSesion(clave); + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SaldoInsuficienteExcepction.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SaldoInsuficienteExcepction.java new file mode 100644 index 0000000..e8e1e99 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SaldoInsuficienteExcepction.java @@ -0,0 +1,7 @@ +package bytebank_excep; + +public class SaldoInsuficienteExcepction extends Exception { + public SaldoInsuficienteExcepction(String mensaje) { + super(mensaje); + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SistemaInterno.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SistemaInterno.java new file mode 100644 index 0000000..10e0892 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/SistemaInterno.java @@ -0,0 +1,19 @@ +package bytebank_excep; + +public class SistemaInterno { + + private String clave = "12345"; + + public boolean autentica(Autenticable autenticable) { + + boolean autorizado = autenticable.inicioSesion(clave); + if (autorizado) { + System.out.println("Sesion iniciada"); + return true; + } else { + System.out.println("No autorizado"); + return false; + } + + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/TestCuentaExceptionSaldo.java b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/TestCuentaExceptionSaldo.java new file mode 100644 index 0000000..189b607 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/bytebank_excep/TestCuentaExceptionSaldo.java @@ -0,0 +1,33 @@ +package bytebank_excep; + +public class TestCuentaExceptionSaldo { + public static void main(String[] args) { + Cuenta ca = new CuentaAhorro(11, 22); + System.out.println("Deposito 1000"); + ca.depositar(1000); + try { + System.out.println("Retirando 1000"); + ca.retirar(1000); + System.out.println("Retiro OK"); + + //System.out.println("Retirando 1"); + //ca.retirar(1); + //System.out.println("Retiro OK"); + + Cuenta cc = new CuentaCorriente(11, 33); + cc.depositar(1000); + cc.transferir(500, ca); + cc.transferir(5000, ca); + System.out.println(ca.getSaldo()); + System.out.println(cc.getSaldo()); + + + + + + } catch (SaldoInsuficienteExcepction e) { + e.printStackTrace(); + } + System.out.println("Fin Programa"); + } +} diff --git a/008_java_oo/eclipse/bytebank_excep/src/module-info.java b/008_java_oo/eclipse/bytebank_excep/src/module-info.java new file mode 100644 index 0000000..20ed545 --- /dev/null +++ b/008_java_oo/eclipse/bytebank_excep/src/module-info.java @@ -0,0 +1,2 @@ +module bytebank_excep { +} \ No newline at end of file diff --git a/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Conexion.java b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Conexion.java new file mode 100644 index 0000000..698ec89 --- /dev/null +++ b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Conexion.java @@ -0,0 +1,23 @@ +package pila_ejecucion; + +public class Conexion implements AutoCloseable { + + public Conexion() { + System.out.println("Abriendo conexion"); + //throw new IllegalStateException(); + } + + public void leerDatos() { + System.out.println("Recibiendo datos"); + throw new IllegalStateException(); + } + + public void cerrar() { + System.out.println("Cerrando conexion"); + } + + @Override + public void close() throws Exception { + cerrar(); + } +} diff --git a/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Cuenta.java b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Cuenta.java new file mode 100644 index 0000000..81213f7 --- /dev/null +++ b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/Cuenta.java @@ -0,0 +1,7 @@ +package pila_ejecucion; + +public class Cuenta { + void deposita() throws MiExcepcion2 { + throw new MiExcepcion2(); + } +} diff --git a/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestConexion.java b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestConexion.java new file mode 100644 index 0000000..b0a7545 --- /dev/null +++ b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestConexion.java @@ -0,0 +1,27 @@ +package pila_ejecucion; + +public class TestConexion { + public static void main(String[] args) throws Exception { + try (Conexion con = new Conexion()){ + con.leerDatos(); + } catch (IllegalStateException e) { + System.out.println("Ejecutando catch"); + e.printStackTrace(); + } + /* + Conexion con = null; + try { + con = new Conexion(); + con.leerDatos(); + } catch (IllegalStateException e) { + System.out.println("Ejecutando catch"); + e.printStackTrace(); + } finally { + System.out.println("Ejecutando finally"); + if (con != null) { + con.cerrar(); + } + } + */ + } +} diff --git a/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestCuentaExceptionChecked.java b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestCuentaExceptionChecked.java new file mode 100644 index 0000000..ef94d5b --- /dev/null +++ b/008_java_oo/eclipse/pila_ejecucion/src/pila_ejecucion/TestCuentaExceptionChecked.java @@ -0,0 +1,16 @@ +package pila_ejecucion; + +public class TestCuentaExceptionChecked { + + public static void main(String[] args) { + + Cuenta cuenta = new Cuenta(); + try { + System.out.println("en try"); + cuenta.deposita(); + } catch (MiExcepcion2 ex) { + System.out.println("en catch"); + ex.printStackTrace(); + } + } +} diff --git a/008_java_oo/excepciones.md b/008_java_oo/excepciones.md index df6e1ca..b61e1cc 100644 --- a/008_java_oo/excepciones.md +++ b/008_java_oo/excepciones.md @@ -253,3 +253,203 @@ comprueba obligatoriamente y las que no. - Los segundos están **unchecked** y se crean como descendientes de **RuntimeException**. +## Ejemplo de manejo de checked exception + + +Clase +[SaldoInsuficienteExcepction.java](./eclipse/bytebank_excep/src/bytebank_excep/SaldoInsuficienteExcepction.java) +, proyecto [bytebank](./eclipse/bytebank_excep/src/bytebank_excep/) + +```java +public class SaldoInsuficienteExcepction extends Exception { + public SaldoInsuficienteExcepction(String mensaje) { + super(mensaje); + } +} +``` + +Clase [Cuenta.java](./eclipse/bytebank_excep/src/bytebank_excep/Cuenta.java) + +```java + public void retirar(double valorRetiro) throws SaldoInsuficienteExcepction { + if (this.saldo < valorRetiro) { + throw new SaldoInsuficienteExcepction("Saldo insuficiente"); + } + this.saldo -= valorRetiro; + } + + public boolean transferir(double montoTransferencia, Cuenta cuenta) throws SaldoInsuficienteExcepction{ + if (this.saldo >= montoTransferencia) { + try { + this.retirar(montoTransferencia); + } catch (SaldoInsuficienteExcepction e) { + e.printStackTrace(); + } + cuenta.depositar(montoTransferencia); + return true; + } else { + throw new SaldoInsuficienteExcepction("Saldo insuficiente\nSaldo : $ "+ + this.saldo+"\nRetiro: $ "+montoTransferencia); + } + } +} +``` + +Clase [CuentaCorriente.java](./eclipse/bytebank_excep/src/bytebank_excep/CuentaCorriente.java) + +```java + @Override + public void retirar(double valorRetiro) throws SaldoInsuficienteExcepction { + double comision = 0.2; + System.out.println("Ejecutando retiro sobreescrito"); + super.retirar( valorRetiro + comision ); + } + + @Override + public void depositar(double valorDeposito) { + this.saldo += valorDeposito; + } +} +``` + +Test +[TestCuentaExceptionSaldo.java](./eclipse/bytebank_excep/src/bytebank_excep/TestCuentaExceptionSaldo.java) + +```java +public class TestCuentaExceptionSaldo { + public static void main(String[] args) { + Cuenta ca = new CuentaAhorro(11, 22); + System.out.println("Deposito 1000"); + ca.depositar(1000); + try { + System.out.println("Retirando 1000"); + ca.retirar(1000); + System.out.println("Retiro OK"); + + //System.out.println("Retirando 1"); + //ca.retirar(1); + //System.out.println("Retiro OK"); + + Cuenta cc = new CuentaCorriente(11, 33); + cc.depositar(1000); + cc.transferir(500, ca); + cc.transferir(5000, ca); + System.out.println(ca.getSaldo()); + System.out.println(cc.getSaldo()); + } catch (SaldoInsuficienteExcepction e) { + e.printStackTrace(); + } + System.out.println("Fin Programa"); + } +} +``` + +Salida del programa con mensaje personalizado del error `Saldo: $499.8` y +`Retiro: $5000.0`, incluyendo valores de variables + +```java +Deposito 1000 +Retirando 1000 +Retiro OK +Cuentas creadas: 2 +Ejecutando retiro sobreescrito +bytebank_excep.SaldoInsuficienteExcepction: Saldo insuficiente +Saldo : $ 499.8 +Retiro: $ 5000.0 + at bytebank_excep/bytebank_excep.Cuenta.transferir(Cuenta.java:41) + at bytebank_excep/bytebank_excep.TestCuentaExceptionSaldo.main(TestCuentaExceptionSaldo.java:20) +Fin Programa +``` + +### finally + +[Conexion.java](./eclipse/pila_ejecucion/src/pila_ejecucion/Conexion.java) + +```java +public class Conexion { + + public Conexion() { + System.out.println("Abriendo conexion"); + //throw new IllegalStateException(); + } + + public void leerDatos() { + System.out.println("Recibiendo datos"); + throw new IllegalStateException(); + } + + public void cerrar() { + System.out.println("Cerrando conexion"); + } +} +``` + +[TestConexion.java](./eclipse/pila_ejecucion/src/pila_ejecucion/TestConexion.java) + +```java +public class TestConexion { + public static void main(String[] args) { + Conexion con = null; + try { + con = new Conexion(); + con.leerDatos(); + } catch (IllegalStateException e) { + System.out.println("Ejecutando catch"); + e.printStackTrace(); + } finally { + System.out.println("Ejecutando finally"); + if (con != null) { + con.cerrar(); + } + } + } +} +``` + +## try with resources + +Similar a los ***context managers*** de Python. Se usan con **recursos**, donde +la clase instanciada implementa la interfáz `AutoCloseable`, que requiere +implementar un método `close()`. + +[Conexion.java](./eclipse/pila_ejecucion/src/pila_ejecucion/Conexion.java) + +```java +public class Conexion implements AutoCloseable { + + public Conexion() { + System.out.println("Abriendo conexion"); + //throw new IllegalStateException(); + } + + public void leerDatos() { + System.out.println("Recibiendo datos"); + throw new IllegalStateException(); + } + + public void cerrar() { + System.out.println("Cerrando conexion"); + } + + @Override + public void close() throws Exception { + cerrar(); + } +} +``` + +[TestConexion.java](./eclipse/pila_ejecucion/src/pila_ejecucion/TestConexion.java) + +```java +public class TestConexion { + public static void main(String[] args) throws Exception { + try (Conexion con = new Conexion()){ + con.leerDatos(); + } catch (IllegalStateException e) { + System.out.println("Ejecutando catch"); + e.printStackTrace(); + } + } +} +``` + diff --git a/README.md b/README.md index c29deb9..3e3e60d 100644 --- a/README.md +++ b/README.md @@ -31,3 +31,6 @@ primoridiales en programación con Javascript. - [Java](./008_java_oo/README.md) Orientado a Objetos - [Primeros pasos](./008_java_oo/primeros_pasos.md) - [Orientación a objetos](./008_java_oo/orientacion_obj.md) + - [Herencia e Interfaces](./008_java_oo/herencia_interfaces.md) + - Un poco sobre [Enums y Annotations](./008_java_oo/enums_anotaciones_java.md) + - [Excepciones](./008_java_oo/excepciones.md)