Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/05/2006, 06:02
GreenEyed
 
Fecha de Ingreso: octubre-2003
Mensajes: 3.578
Antigüedad: 21 años, 4 meses
Puntos: 51
Exacto. Lo que quería decir yo es lo que comenta chuidiang. La idea es que cuando lanzas una excepcion, la idea es que no puedes seguir con lo que estas haciendo y tienes que hacer una "salida de emergencia" y hacerle notar al metodo que te llamo que ocurrió algo imprevisto. Lo que ocurre es que es cuestion de contexto. Por ejemplo, si un usuario te puede introducir un texto libre en un campo, pero en la base de datos no caben mas de 100, es normal que te puedan intentar introducir un texto mayor que 100, y lo que tendras que hacer es tratar ese "error" pero es algo "esperado", asi que muestras un mensaje, lo que sea y ya esta. En cambio, si al intentar ejecutar esa misma instruccion te da un error SQL, aunque sea por que un campo es mas largo, entonces eso sí es un problema, por que teoricamente no tendría que pasar: es una excepción.

No es un concepto 100% seguro y no es blanco/negro, pero la idea es mirar quien puede hacer algo con ese error y si es algo esperado o no. Si es algo inesperado que no deberia ocurrir o no podemos hacer nada con ese error, entonces es una excepcion. Si es algo esperado por que puede pasar y/o nosotros mismos vamos a tratar el error, entonces no se lanza excepcion.

Lo que nunca es recomendable hacer, es usar las excepcion para controlar "el flujo de operaciones normal", ya que hay programadores que por pereza de poner un if/else o escribir correctamente la condicion de finalizacion de un bucle, hacen un try/catch y provocan una excepcion para "saltarse" un trozo de codigo o acabar un bucle. Y eso si que no es correcto, lo mires por donde lo mires.

Hay que tener en cuenta que lanzar una excepcion es una operacion, computacionalmente, bastante costosa en tiempo/recursos, asi que en funcionamiento "normal" no deberia lanzarse "ninguna".

Espero que quede más claro ahora. .
<S>

PD: Como dice chuidiang, no es lo mismo un API que una aplicación. Una API normalmente no puede tratar el error, asi que suele lanzar excepciones. El ejemplo que pones tu es una API.