Jva Excepciones: Fin
This commit is contained in:
parent
0f1c8e3e18
commit
c7776a9137
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package bytebank_excep;
|
||||||
|
|
||||||
|
public interface Autenticable {
|
||||||
|
|
||||||
|
public void setClave(String clave);
|
||||||
|
|
||||||
|
public boolean inicioSesion(String clave);
|
||||||
|
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,10 @@
|
|||||||
|
package bytebank_excep;
|
||||||
|
|
||||||
|
public class Contador extends Funcionario {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getBonificacion() {
|
||||||
|
return 200.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package bytebank_excep;
|
||||||
|
|
||||||
|
public class SaldoInsuficienteExcepction extends Exception {
|
||||||
|
public SaldoInsuficienteExcepction(String mensaje) {
|
||||||
|
super(mensaje);
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -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");
|
||||||
|
}
|
||||||
|
}
|
2
008_java_oo/eclipse/bytebank_excep/src/module-info.java
Normal file
2
008_java_oo/eclipse/bytebank_excep/src/module-info.java
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
module bytebank_excep {
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package pila_ejecucion;
|
||||||
|
|
||||||
|
public class Cuenta {
|
||||||
|
void deposita() throws MiExcepcion2 {
|
||||||
|
throw new MiExcepcion2();
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -253,3 +253,203 @@ comprueba obligatoriamente y las que no.
|
|||||||
- Los segundos están **unchecked** y se crean como descendientes de
|
- Los segundos están **unchecked** y se crean como descendientes de
|
||||||
**RuntimeException**.
|
**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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
@ -31,3 +31,6 @@ primoridiales en programación con Javascript.
|
|||||||
- [Java](./008_java_oo/README.md) Orientado a Objetos
|
- [Java](./008_java_oo/README.md) Orientado a Objetos
|
||||||
- [Primeros pasos](./008_java_oo/primeros_pasos.md)
|
- [Primeros pasos](./008_java_oo/primeros_pasos.md)
|
||||||
- [Orientación a objetos](./008_java_oo/orientacion_obj.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)
|
||||||
|
Loading…
Reference in New Issue
Block a user