Excepciones

Solo disponible en BuenasTareas
  • Páginas : 29 (7222 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de junio de 2011
Leer documento completo
Vista previa del texto
Unidad II Excepciones
3.1 Jerarquía de Excepciones
Las excepciones son objetos pertenecientes a la clase Throwable o alguna de sus
subclases.
Dependiendo del lugar donde se produzcan existen dos tipos de excepciones:
1) Las excepciones síncronas no son lanzadas en un punto arbitrario del programa sino que, en cierta forma, son previsibles en determinados puntos del programa comoresultado de evaluar ciertas expresiones o la invocación de determinadas instrucciones o métodos.
2) Las excepciones asíncronas pueden producirse en cualquier parte del programa y no son tan “previsibles”. Pueden producirse excepciones asíncronas debido a dos razones:

La invocación del método stop() de la clase Thread
que se está ejecutando.
Un error interno en la máquina virtual Java.Dependiendo de si el compilador comprueba o no que se declare un manejador para tratar las excepciones, se pueden dividir en:

1) Las excepciones comprobables son repasadas por el compilador Java durante el proceso de compilación, de forma que si no existe un manejador que las trate, generará un mensaje de error.
2) Las excepciones no comprobables son la clase RuntimeException y sussubclases junto con la clase Error y sus subclases.

También pueden definirse por el programador subclases de las excepciones anteriores. Las más interesantes desde el punto de vista del programador son las subclases de la superclase Exception ya que éstas pueden ser comprobadas por el compilador.

La jerarquía de excepciones existentes en el paquete java.lang es la siguiente:

Ejemploclass Nif {
int dni;
char letra;
static final char tabla[]={'T','R','W','A','G','M','Y',
'F','P','D','X','B','N','J',
'Z','S','Q','V','H','L','C','K','E'};
public Nif(int ndni,char nletra) throws NifException{
// debido a la cláusula throws, este método es capaz
// de generar excepciones de la clase NifException
if (Character.toUpperCase(nletra)==tabla[ndni%23]) {
// si la letra escorrecta, almacenarla en el atributo
dni=ndni;
letra=Character.toUpperCase(nletra);
}
else
// si la letra es incorrecta, generar una excepción
throw new LetraNifException("Letra de NIF incorrecta");
}
public Nif(int ndni) {
dni=ndni;
letra=tabla[dni%23];
}
public Nif(String sNif) throws NifException,
LetraNifException {
// debido a la cláusula throws, este método es capaz
// degenerar excepciones de la clase NifException y
// de la clase LetraNifException, aunque en realidad
// sería suficiente con NifException, ya que la clase
// LetraNifException es una subclase de ésta.
char letraAux;
StringBuffer sNumeros= new StringBuffer();
int i,ndni;
for (i=0;i<sNif.length();i++) {
if ("1234567890".indexOf(sNif.charAt(i))!=-1) {
sNumeros.append(sNif.charAt(i));
}
}
try{
dni=Integer.parseInt(sNumeros.toString());
letraAux=Character.toUpperCase(sNif.charAt(
sNif.length()-1));
} catch (Exception ex) {
// este bloque catch intercepta cualquier tipo de
// excepción, incluso NumberFormatException
throw new NifException("NIF incorrecto");
}
letra=tabla[dni%23];
if ("ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(letraAux)!=-1) {
// es una letra correcta
if(letraAux!=letra) {
// pero no la adecuada para el NIF
throw new
LetraNifException("Letra de NIF incorrecta");
}
} else letra=tabla[dni%23];
}
public char obtenerLetra() {
return letra;
}
public int obtenerDni() {
return dni;
}
public String toString() {
// redefinición del método toString() para que devuelva
// un valor más significativo.
return(String.valueOf(dni)+String.valueOf(letra));
}
public String toStringConFormato() {
String sAux= String.valueOf(dni);
StringBuffer s = new StringBuffer();
int i;
for (i=sAux.length()-1;i>2;i-=3) {
s.insert(0,sAux.substring(i-2,i+1));
s.insert(0,".");
}
s.insert(0,sAux.substring(0,i+1));
s.append('-');
s.append(letra);
return (s.toString());
}
static char letraNif(int ndni) {
return tabla[ndni%23];
}
static char...
tracking img