Foros del Web » Programación para mayores de 30 ;) » Java »

excepciones java

Estas en el tema de excepciones java en el foro de Java en Foros del Web. Buenas tardes a todos, actualmente estoy aprendiendo exepciones en java de un libro que estoy leyendo "como programar en java" de "Deitel"... y bueno explican ...
  #1 (permalink)  
Antiguo 01/08/2012, 13:23
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años
Puntos: 8
excepciones java

Buenas tardes a todos, actualmente estoy aprendiendo exepciones en java de un libro que estoy leyendo "como programar en java" de "Deitel"... y bueno explican los bloques try catch y hasta hay entiendo vi los graficos de las jerarquias de herencias y bueno lo que no entiendo bien es el throws según lo poco que entendí se usan para las excepciones verificadas y también se utiliza para lanzar una excepción...

si una excepción verificada no tiene la palabra throws en el metodo da error? no puedo usar el try catch por no colocar throws?

por ejemplo:

Código java:
Ver original
  1. public static int cociente(int numerador, int denominador)
  2.     throws ArithmeticException
  3.  {
  4.    return numerador/ denominador;
  5.  }
entonces ese metodo se llama en un bloque try en caso que yo no especifique que el metodo lanza una excepcion da un error?
que funcion tiene colocar la palabra clase throws en el metodo?


gracias de antemano a las personas que me puedan ayudar
  #2 (permalink)  
Antiguo 01/08/2012, 15:16
Avatar de stone_neo  
Fecha de Ingreso: abril-2004
Ubicación: Peru
Mensajes: 438
Antigüedad: 20 años
Puntos: 15
Respuesta: excepciones java

Si en metodo cualquiera tu haces una division necesitas atrapar la excepcion ArithmeticException, ya que no te dejara compilar.

Pero al colocar throws ArithmeticException en tu funcion lo que estas haciendo es que en esa funcion no necesitas capturar la excepcion y se lo envias al siguiente nivel, osea el metodo que haga uso de la funcion cociente tiene que capturar la excepcion ArithmeticException o en todo caso volver a usar el throws ArithmeticException y que en el siguiente nivel lo capture.

Espero haber podido aclarar tu duda. Saludos
__________________
Rubén Darío Huamaní Ucharima
Web : http://www.gorilla-soft.com
Usuario Linux #382 100 :-)
  #3 (permalink)  
Antiguo 01/08/2012, 16:51
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 4 meses
Puntos: 57
Respuesta: excepciones java

Cita:
Iniciado por oscard41 Ver Mensaje
...y bueno lo que no entiendo bien es el throws según lo poco que entendí se usan para las excepciones verificadas y también se utiliza para lanzar una excepción...
Estas confundiendo throw con throws

throw se utiliza para lanzar excepciones
throws se utiliza para indicar que la funcion actual no tiene try/catch que capture la excepcion. La excepcion tendria que ser capturada por la funcion que mando llamar a la funcion actual

Última edición por posman; 01/08/2012 a las 18:26
  #4 (permalink)  
Antiguo 01/08/2012, 18:27
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años
Puntos: 8
Respuesta: excepciones java

Cita:
Iniciado por posman Ver Mensaje
Estas confundiendo throw con throws

throw se utiliza para lanzar excepciones
throws se utiliza para indicar que la funcion no tiene try/catch que capture la excepcion y esta tendria que ser capturada por la funcion que mando llamar a la funciona actual
ok entiendo pero entonces como haría para capturar a la excepción en caso de usar "throws" y generar un código para esa excepción?
  #5 (permalink)  
Antiguo 02/08/2012, 00:42
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: excepciones java

La jerarquía de Excepciones comienza con Throwable. De ella derivan las verificadas (RuntimeException) y las no verificadas (Exception).

Cuando escribes un método y usas throws Throwable, equivale a hacer

try {
// lo que quiera que haga el código
} catch(Throwable t) {
throw t;
}

Simplemente, ante cualquier tipo de excepción que se produzca en este método, lanzará la misma al método que lo llame desde cualquier otra parte de la aplicación.

Tú decides en qué punto quieres gestionar esas excepciones, como por ejemplo, para hacer rollbacks de operaciones contra una base de datos, devolver un resultado diferente o mostrar un mensaje de error, etc.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #6 (permalink)  
Antiguo 02/08/2012, 08:03
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años
Puntos: 8
Respuesta: excepciones java

Cita:
Iniciado por Fuzzylog Ver Mensaje
La jerarquía de Excepciones comienza con Throwable. De ella derivan las verificadas (RuntimeException) y las no verificadas (Exception).

Cuando escribes un método y usas throws Throwable, equivale a hacer

try {
// lo que quiera que haga el código
} catch(Throwable t) {
throw t;
}

Simplemente, ante cualquier tipo de excepción que se produzca en este método, lanzará la misma al método que lo llame desde cualquier otra parte de la aplicación.

Tú decides en qué punto quieres gestionar esas excepciones, como por ejemplo, para hacer rollbacks de operaciones contra una base de datos, devolver un resultado diferente o mostrar un mensaje de error, etc.

gracias ahora entiendo...

dime si estoy errado pero creo que ese throws en un metodo seria innecesario colocarlo y al momento de hacer la llamada a ese metodo se coloca "try{}" "catch{}" para manejar la excepción es decir si la llama del metodo se hace en un bloque try....

gracias por tu ayuda
  #7 (permalink)  
Antiguo 03/08/2012, 00:32
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: excepciones java

Depende, puede haber sitios donde necesites usarlo.

Por ejemplo, la separación MODELO-VISTA-CONTROLADOR puede hacer que tengas que, ante una excepción en una transacción contra la Base de Datos hacer un rollback y a la vez transmitir la excepción a la vista para mostrar un mensaje.

También puede ser que quieras arrojar una excepcion personalizada para controlarla por separado de otras excepciones.

Todo esto da mucho juego y habría que ver que es lo más conveniente para cada aplicación.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}

Etiquetas: clase, excepciones, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:05.