También podemos lanzar nuestras propias excepciones, extendiendo la clase System.exception. Por ejemplo, consideremos un programa cliente/servidor. El código cliente se intenta conectar al servidor, y durante 5 segundos se espera a que conteste el servidor. Si el servidor no responde, el servidor lanzaría la excepción de time-out:
class ServerTimeOutException extends Exception {} public void conectame( String nombreServidor ) throws Exception { int exito; int puerto = 80; exito = open( nombreServidor,puerto ); if( exito == -1 ) throw ServerTimeOutException; }
Si se quieren capturar las propias excepciones, se deberá utilizar la sentencia try:
public void encuentraServidor() { ... try { conectame( servidorDefecto ); catch( ServerTimeOutException e ) { g.drawString( "Time-out del Servidor, intentando alternativa", 5,5 ); conectame( servidorAlterno ); } ... }
Cualquier método que lance una excepción también
debe capturarla, o declararla como parte de la interface del método.
Cabe preguntarse entonces, el porqué de lanzar una excepción
si hay que capturarla en el mismo método. La respuesta
es que las excepciones no simplifican el trabajo del control de
errores. Tienen la ventaja de que se puede tener muy localizado
el control de errores y no tenemos que controlar millones de valores
de retorno, pero no van más allá.
|
[Anterior] [Indice] [Siguiente] |