Aunque no es del todo bueno usar solo uno.
Manejo de Excepciones
Alguna vez tuve que hacer una clase que manejara errores (o los gestionara), el código más o menos era algo como esto:
// clase Principal
public class Codemonkey{
public Codemonkey(){}
private TestMiExcepcion test=new TestMiExcepcion();
public static void main(String[] args)throws MiExcepcion{
// en esta parte se encuentra el método "manejaExcepcion"
new Codemonkey().test.manejaExcepcion(args);
}
}
//esta es la "clase Exception" definida
class MiExcepcion extends Exception{
public MiExcepcion(String msg){
super(msg);
}
}
/* esta es la clase que contiene la información del error, en este caso se trata de un vector nulo o con tamaño cero*/
class TestMiExcepcion{
public TestMiExcepcion(){}
public void manejaExcepcion(String[] vector)throws MiExcepcion{
if(vector.length==0){
// esta es la información del error
throw new MiExcepcion("el tamanyo del arreglo no debe ser cero");
}
else if(vector==null){
throw new MiExcepcion("el vector no debe ser nulo");
}
}
}
Todo en un archivo llamado "Codemonkey.java" , es un ejemplo de crear tus propias excepciones. Aqui hay más ejemplos http://stackoverflow.com/questions/1754315/how-to-create-our-own-exceptions-in-java
En muchos casos es bueno definir nuestras propias excepciones, así tendremos una mejor perspectiva de como resolver los problemas en nuestro código (a veces no basta poner try-catch en cada línea de código).
Aquí más código
1. Otro ejemplo de uso de interfaces, clases abstractas y herencia
public class Ejemplos{
public static void main(String[] args) {
Persona deportista= new Deportista("Homero","Simpson","Thompson",36,2,"Futbol");
deportista.ver();
}
}
abstract class Persona implements Servicios{
public static final boolean VALOR=true;
private String nombre;
private String apellidoPaterno;
private String apellidoMaterno;
private int edad;
public Persona(){}
public Persona(String nombre,String apellidoPaterno,String apellidoMaterno,int edad){
this.nombre=nombre;
this.edad=edad;
this.apellidoPaterno=apellidoPaterno;
this.apellidoMaterno=apellidoMaterno;
}
public boolean setNombre(String nombre){
this.nombre=nombre;
return VALOR;
}
public boolean setEdad(int edad){
this.edad=edad;
return VALOR;
}
public boolean setApellidoPaterno(String apellidoPaterno){
this.apellidoPaterno=apellidoPaterno;
return VALOR;
}
public boolean setApellidoMaterno(String apellidoMaterno){
this.apellidoMaterno=apellidoMaterno;
return VALOR;
}
public String getNombre(){
return nombre;
}
public int getEdad(){
return edad;
}
public String getApellidoPaterno(){
return apellidoPaterno;
}
public String getApellidoMaterno(){
return apellidoMaterno;
}
public abstract String verTodo();
}
interface Servicios{
public abstract void ver();
}
class Deportista extends Persona{
private int horas;
private String deporte;
public Deportista colocarDatos(int horas,String deporte){
this.deporte=deporte;
this.horas=horas;
return this;
}
public Deportista(){}
public Deportista(String nombre,String apellidoPaterno,String apellidoMaterno,int edad,int horas,String deporte){
super(nombre,apellidoPaterno, apellidoMaterno,edad);
this.horas=horas;
this.deporte=deporte;
}
@Override
public void ver(){
System.out.printf("%s\n",verTodo());
}
@Override
public String verTodo(){
return "nombre: "+getNombre()+"\napellido paterno: "+getApellidoPaterno()+"\napellido materno: "+getApellidoMaterno()+"\nedad: "+getEdad()+"\nhoras: "+horas+"\ndeporte: "+deporte;
}
}
2. Cálcular el Imc
import java.util.List;
import java.util.ArrayList;
public class Ejemplos{
public static void main(String[] args) {
Imc horacio=new Imc();
horacio.setPeso(45.0);
horacio.setTalla(1.60);
Imc andres= new Imc(67.0,1.66);
List<Imc> listaImc=new ArrayList<Imc>();
listaImc.add(horacio);
listaImc.add(andres);
for(Imc imc: listaImc){
System.out.printf("peso: %f - talla: %f - imc obtenido: %f\n",imc.getPeso(),imc.getTalla(),imc.getIMC());
}
}
}
class Imc{
private double peso;
private double talla;
public Imc(){}
public Imc(double peso,double talla){
this.talla=talla;
this.peso=peso;
}
public double getIMC(){
return peso/(talla*talla);
}
public boolean setPeso(double peso){
this.peso=peso;
return true;
}
public double getPeso(){
return peso;
}
public boolean setTalla(double talla){
this.talla=talla;
return true;
}
public double getTalla(){
return talla;
}
}
3. Calcular la frecuencia cardíaca máxima:
import java.util.Scanner;
public class Codemonkey{
public static void main(String[] args)throws MiExcepcion {
int edad=0;
double porc=0.0;
Scanner teclado=new Scanner(System.in);
do{
System.out.println("Introduce tu edad:");
edad=teclado.nextInt();
}while(edad<=0);
do{
System.out.println("Introduce % de esfuerzo a realizar: ");
porc=teclado.nextDouble();
}while(porc<=0.0);
System.out.println("frecuencia cardiaca maxima obtenida: "+porcentaje(obtenerFcmax(edad),porc));
}
public static int obtenerFcmax(int edad)throws MiExcepcion{
int frecuencia=0;
if(edad<=0){
throw new MiExcepcion();
}
frecuencia=(220-edad);
return frecuencia;
}
public static double porcentaje(double puls,double porc)throws MiExcepcion{
double porcen=0.0;
if(puls==0.0 || porc==0.0){
throw new MiExcepcion("no debe haber valores nulos, menores o iguales a cero");
}
porcen=(porc/100)*puls;
return porcen;
}
}
class MiExcepcion extends Exception{
public MiExcepcion(){super("la edad no debe ser cero o nula");}
public MiExcepcion(String msg){super(msg);}
}
Links
http://www.arrakis.es/~abelp/ApuntesJava/GestionExcepciones.htm
No hay comentarios:
Publicar un comentario