elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Excepciones en Java[Solucionado]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Excepciones en Java[Solucionado]  (Leído 3,264 veces)
nandoooo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Excepciones en Java[Solucionado]
« en: 14 Abril 2012, 16:22 pm »

Hola!
Estoy iniciandome en Java y despues de leer algún que otro libro y tal me dispongo a hacer una aplicación que copia ficheros.

Me han pasado el siguiente código:
Código:
public class Cpl {

    public static void main (String args[]) {
      
      DataInputStream inorig;
      DataOutputStream outdst;
      final int TAMANO = 512;
      int error=0;      
      try {
         // Procesado de argumentos de entrada.        
         inorig = new DataInputStream (new FileInputStream (args[0]));
         outdst = new DataOutputStream (new FileOutputStream (args[1]));
        
         byte b[] = new byte [TAMANO];
         for(int n = 0;-1 != (n = inorig.read(b,0,TAMANO));) {
            outdst.write (b,0,n);
         }
         inorig.close();
         outdst.close();
      }
      catch (FileNotFoundException e) {
        System.err.println("Fichero no encontrado");
        error=1;
      }
      catch(IOException e) {
        System.err.println("Error en la transferencia");
        e.printStackTrace();
        error=1;
      }
      catch (IndexOutOfBoundsException e) {
        System.err.println("Uso: Cpl <fichero_origen> <fichero_destino>");
        error=1;
      }
      if(error!=0)
         System.exit(error);
    }
}
Pero claro...esto no me detecta los posibles fallos que puedan surgir, como puede ser fallos de paso de argumentos y tal...pero lo que mas me despista es algo que he visto en el javadoc:
En la clase IOException, he visto el siguiente contructor:
Código:
public IOException(String message, Throwable cause)
y me viene muy bien para detectar fallos de lectura y escritura con write y read sin usar try´s anidados, pero no consigo usarlo de forma correcta.¿Alguna idea?
Gracias!
        


« Última modificación: 16 Abril 2012, 20:56 pm por nandoooo » En línea

raul_samp

Desconectado Desconectado

Mensajes: 36



Ver Perfil
Re: Excepciones en Java
« Respuesta #1 en: 15 Abril 2012, 03:39 am »

En la clase IOException, he visto el siguiente contructor:
Código:
public IOException(String message, Throwable cause)
y me viene muy bien para detectar fallos de lectura y escritura con write y read sin usar try´s anidados, pero no consigo usarlo de forma correcta.¿Alguna idea?
Gracias!
       

El constructor del que hablas es un constructor heredado de Throwable (que es de donde hereda Exception) sirve para enlazar cadenas de excepciones, es decir. Cuando quieres lanzar una excepción puedes decidir usar este constructor de una manera como esta:
Código
  1. throw new IOException("Descripcion", causa);
Siendo causa un Throwable (o evidentemente algo que herede de él).

No entiendo bien cual es el problema con el código, tal y como lo tienes no hay try anidados, y el fallo de paso de argumentos lo tienes controlado con:
Código
  1.        System.err.println("Uso: Cpl <fichero_origen> <fichero_destino>");
  2.        error=1;
  3.      }

Si puedes explicar un poco mejor cual es la duda o concretar más que es lo que quieres hacer seguro que encontramos una solución.

Un saludo!


En línea

Yeah Mr. White, yes science!!
nandoooo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Excepciones en Java
« Respuesta #2 en: 15 Abril 2012, 08:36 am »

Lo primero, gracias por contestar ;D
A ver si consigo explicarme:
Ahora no ha try´s anidados pero en el código tanto el método read() como write() lanzan excepciones IOException y lo que quiero saber es en caso de fallo qué método lanzó la excepción para poder gestionarla aunque sea con un simple
Código
  1.   System.err.println("Fallo de lectura");
o
Código
  1.    System.err.println("Fallo de escritura");
Es que el tema este de las excepciones no me queda muy claro.
¿Podría hacer algo como esto?:
Código
  1. catch(IOException e) {
  2.        System.err.println("Error en la transferencia");
  3.        System.err.println("+e.cause.toString()+");
  4.        error=1;
  5.      }
  6.  
En línea

[Case]


Desconectado Desconectado

Mensajes: 474



Ver Perfil WWW
Re: Excepciones en Java
« Respuesta #3 en: 16 Abril 2012, 00:59 am »

La solución que a mi se me ocurre es que separes todo el campo de try en pequeños trys para poder tratar cada uno de forma diferente.
En línea

nandoooo

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Excepciones en Java
« Respuesta #4 en: 16 Abril 2012, 20:56 pm »

La solución que a mi se me ocurre es que separes todo el campo de try en pequeños trys para poder tratar cada uno de forma diferente.
Es lo que iba a hacer hasta que he dado con ésto:
Código
  1. catch (IOException e) {
  2.    System.err.println("Caught IOException: " +  e.getMessage());                        
  3. }
Muchas gracias por la ayuda!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Algoritmo en Java [SOLUCIONADO]
Java
Azulf 3 9,768 Último mensaje 21 Octubre 2007, 15:25 pm
por marioly
Configuracion JAVA (Solucionado)
Java
Kerber0 2 2,910 Último mensaje 17 Noviembre 2008, 22:50 pm
por joseprox
Ayuda con java (Solucionado)
Java
Alocer 4 4,208 Último mensaje 7 Diciembre 2009, 05:45 am
por Alocer
Ventanita en java (Solucionado)
Java
kondrag_X1 1 3,138 Último mensaje 7 Diciembre 2010, 00:41 am
por kondrag_X1
Ayuda excepciones java!
Java
fosh 2 3,421 Último mensaje 27 Abril 2011, 07:31 am
por fosh
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines