duda java Ejercicio excepciones

Tolomeo

¡Buenas!
No sé si hay algún hilo para dudas solo de java, pero no lo he visto, así que dejo la duda aquí.

Ahora mismo en clase estamos dando las excepciones en java, y una de ellas es NumberFormatException (conversión incorrecta de una cadena a un formato numérico). La cuestión es que no sé si existe la contraria, es decir, que escriban un caracter numérico pero se pide una letra, y salte excepción. No sé si ya existe, o la tengo que crear yo con un método.

Por ejemplo, en el ejercicio que tengo que hacer pido una serie de datos, entre ellos el nombre y apellido:

while(!correcta){                    
try{
System.out.println("Nombre del cliente:" ) ; respNom=stdin.readLine() ;
nombre=respNom; vacioNombre(nombre) ; correcta=true; } catch(excepcionNombre ex){
}
}

           
-------
[code]static void vacioNombre (String nombre)throws excepcionNombre{
    if(nombre==null || nombre.equals(" " ) ){
        System.out.println("El nombre introducido es incorrecto o está vacio. Pruebe de nuevo por favor." ) ;
    }[/code]

En el ejercicio tengo que intentar recopilar la mayoría de excepciones que se podrían dar, así que creo que una de ellas es que introduzcan un número...
¿existe alguno que estoy pasando por alto? ¿o lo tendría que crear yo?

m4andg4

intenta usar

[ /code]
Saiko9

No se lo que te piden pero si quieres capturar cualquier excepcion en el catch captura la clase Exception, que todas derivan de ella mediante herencia. Por lo tanto capturaras cualquier excepcion sea la que sea.

Por cierto tienes una etiqueta(code) para poner el codigo bien, que eso es muy chapuza para leerlo xD

1 1 respuesta
Tolomeo

Ay perdón por lo del code, no me suelo meter en esta sección del foro, así que no lo sabía.

#3 Sí, pero el profesor no quiere esa general, quiere que pensemos en las diferentes excepciones, pero gracias^^

1 respuesta
Saiko9

#4 Te han dado la función vacioNombre? porque esta mal puesta.

Estas intentando lanzar una excepcion tuya supongo( excepcion nombre) pero no estas haciendo nada realmente si pones un System.out...

Seria algo asi dependiendo del constructor que tengas en la clase excepcionNombre

static void vacioNombre (String nombre)throws excepcionNombre{
        if(nombre==null || nombre.equals(" " ) ) throw  new excepcionNombre();

     
    

Luego ya en el codigo de arriba es donde metes el try catch como tienes puesto y puedes esperar a que te venga una excepcion de abajo, la capturas y haces lo que te de la gana.

En cuanto a tu pregunta de si hay mas excepciones? pues alguna habrá la verdad que no lo se java tiene muchisimas ya hechas. Mirate un diagrama de excepciones por google para ver si usas alguna de esas directamente o si no hazte otra clase excepcion, donde la vayas a lanzar pones el caso del if en el que quieras lanzarla (hacer el throw) y en la parte superior del codigo donde tienes el catch, puedes concatenarlos:

try {}
catch (excepcion 1){ //haces algo1}
catch (ezcepcion 2) {//haces algo2}
1 1 respuesta
Tolomeo

#5 :O cierto, lo tenía mal! corregido ^^

Voy a echar un vistazo a ver, aunque encuentro las mismas que en mis apuntes, así que supongo que tendré que crearla nueva.

mil gracias

1 respuesta
Saiko9

#6 te cuento lo que haría yo en tu caso, capturaría la clase exception padre y en el catch le diría que me imprimiera su valor( hay formas de hacerlo como por ejemplo la función printTrace()o algo así. Luego compilaría el código e intentaría petarlo por todas partes para que me diera el error por pantalla correspondiente.
Si mal no recuerdo te va a decir cuales son las excepciones que están saltando de verdad, pues las apuntas y luego en el try catch concatenas los catch con las que te hayan salido por pantalla y haces algo diferente para cada caso que creo que es lo que te pide el profesor.

1
Lecherito

Cualquier IDE medianamente moderno si no le pones try catch al código te va a pedir añadir try catch (o lanzarlas para arriba) por lo que no hace falta ver qué excepciones se lanzan, ya te lo hace todo el Eclipse o IntelliJ IDEA de turno.

No hay una excepción para lo que dices pero la puedes crear tú de una manera sencilla como ya te habrán explicado.

PD: Que las clases empiecen siempre por mayúscula.

1

Usuarios habituales

  • Lecherito
  • Saiko9
  • Tolomeo
  • m4andg4