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

Duda try catch

Estas en el tema de Duda try catch en el foro de Java en Foros del Web. Muy buenas, Tengo esta parte de codigo para leer el codigo fuente de una web @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código java: Ver original try       ...
  #1 (permalink)  
Antiguo 17/04/2013, 11:24
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Duda try catch

Muy buenas,

Tengo esta parte de codigo para leer el codigo fuente de una web
Código java:
Ver original
  1. try
  2.         {
  3.             direccioURL= new URL(urls.get(0));
  4.             llegirCodi= new InputStreamReader(direccioURL.openStream());
  5.             bufferListaUrls = new BufferedReader(llegirCodi);
  6.             while((liniaURL = bufferListaUrls.readLine()) != null)
  7.             {
  8.                 buffCodiUrl.append(liniaURL);
  9.             }
  10.             bufferListaUrls.close();
  11.             llegirCodi.close();
  12.            
  13.         } catch (MalformedURLException e)
  14.         {                       // Excepcions que salten si no podem llegir el codi font
  15.             System.err.println( "Error en la url");
  16.         } catch (IOException e)
  17.         {
  18.             System.err.println( "Error al fitxer");
  19.         }

Si quito el segundo catch no me compila el programa, el eclipse me marca las linias 4,6,10 y 11 poniendo "Unable exception type IOException" alguine me podria decir el porque?
De que depende de las funciones que haya utilizado?

Tampoco acabo de entender el tipo de expcepciones MalformedURLException.

Saludos
  #2 (permalink)  
Antiguo 17/04/2013, 11:55
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda try catch

Cita:
Tampoco acabo de entender el tipo de expcepciones MalformedURLException.
Cita:
direccioURL= new URL(urls.get(0));
Creas un objeto de tipo URL y tienes una excepcion llamada MalformedURL ¿tú que crees que significa?

http://docs.oracle.com/javase/7/docs...Exception.html

En java las excepciones se usan para obligar/ofrecer al programador la posibilidad de atender correctamente un problema que se puede presentar en un determinado método.

En el caso del IOException, supón que vas a leer un fichero y está corrupto, se interrumpe la conexión o está protegido contra escritura, lo lógico es que te avise de alguna manera para que tú puedas decidir qué hacer.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 17/04/2013, 12:10
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Duda try catch

Es decir qu si dentro de un try utilizo objeto de tipu URL me obliga a controlar 2 excepciones no?

Ya intento utilizar la API de java pero la verdad que no me aclaro mucho con lo que pone, falta de practica.

Gracias
  #4 (permalink)  
Antiguo 17/04/2013, 12:52
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda try catch

No, aunque sólo es una forma de decir lo mismo, el concepto es importante. Tienes que meterlo dentro de un try porque el método te obliga, avisa de que puede lanzar esa excepción y tú tienes que hacer algo con ella.

http://docs.oracle.com/javase/6/docs...a/net/URL.html

Cita:
public URL(String spec)
throws MalformedURLException
Creates a URL object from the String representation.
This constructor is equivalent to a call to the two-argument constructor with a null first argument.

Parameters:
spec - the String to parse as a URL.
Throws:
MalformedURLException - If the string specifies an unknown protocol.
Cita:
openStream

public final InputStream openStream()
throws IOException
Opens a connection to this URL and returns an InputStream for reading from that connection. This method is a shorthand for:
openConnection().getInputStream()

Returns:
an input stream for reading from the URL connection.
Throws:
IOException - if an I/O exception occurs.


Busca los métodos que estás usando y verás que ya te advierten de que lanzan esas excepciones.

Lee la API o las ayudas que te muestra el IDE, es la única forma de aprender.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #5 (permalink)  
Antiguo 18/04/2013, 06:41
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Duda try catch

Cita:
Iniciado por Xerelo Ver Mensaje



Busca los métodos que estás usando y verás que ya te advierten de que lanzan esas excepciones.

Lee la API o las ayudas que te muestra el IDE, es la única forma de aprender.
Si si, si ya lo voy haciendo pero me cuesta entenderlo por eso voy preguntando por aqui, siempre es mas facil de entender si alguien te lo explica un poco gracias por eso.

Otra consulta rapida, la clase StringBuffer que diferencia hay entre un ArrayList<String>, buscando por internet he entendido que es casi lo mismo por no decir lo mismo es cierto?



Ya ire comentando como va la cosa que aun me queda curro para acabar esto



Saludos

Última edición por Macas; 18/04/2013 a las 06:47
  #6 (permalink)  
Antiguo 18/04/2013, 09:53
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda try catch

StringBuffer y ArrayList<String> no tienen nada que ver.

http://docs.oracle.com/javase/1.5.0/...ingBuffer.html

Cita:
A string buffer is like a String, but can be modified. At any point in time it contains some particular sequence of characters, but the length and content of the sequence can be changed through certain method calls.
String buffer es una clase que te permite modificar una String, añadir, borrar, modificar, etc.

ArrayList<String> es una colección (lista) de Strings.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #7 (permalink)  
Antiguo 18/04/2013, 16:00
 
Fecha de Ingreso: noviembre-2012
Mensajes: 136
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Duda try catch

Muchas gracias.

Se que se soy pesado pero ya que estamos.... he conseguido bueno encontrado y adaptado partes de codigo que son de mi interés en este caso es este:

Código java:
Ver original
  1. InputStream bufferEntrada = connexio.getInputStream(); //Creem el buffer per anar llegint les dades de la web
  2.        
  3. FileOutputStream bufferSortida = new FileOutputStream(arxiu); //Creem un buffer per anar introduint les dades al fitxer
  4.        
  5.         while (x!=-1)
  6.         {
  7.             x=bufferEntrada.read(); //Llegim les dades
  8.             bufferSortida.write(x); //Les guardem al fitxer
  9.            
  10.                
  11.         }

Basicamente bueno falta parte del codigo, cojo una URL y la guardo en un archivo, funcionar funciona lo que no acavo de enteder es el tema de guardar el valor de x (que es un entero) en el fichero, he imprido la x y me van saliendo un monton de numero, supongo que los datos se deben de guardar en hexadecimal porque sino no entiendo bien como hace el guardado en el achivo de texto, de echo he estado probado de canviarlo de esta manera y no me funciona, me los guarda pero mal. Ademas si hago un print de bufferEntrada.read() son otros valores.

Código java:
Ver original
  1. while (bufferEntrada.read()!=-1)
  2.         {
  3.            
  4.             bufferSortida.write(bufferEntrada.read()); //Les guardem al fitxer
  5.                
  6.         }

Saludos y gracias de nuevo
  #8 (permalink)  
Antiguo 19/04/2013, 01:41
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 14 años, 11 meses
Puntos: 306
Respuesta: Duda try catch

http://docs.oracle.com/javase/7/docs...putStream.html

Cita:
FileOutputStream is meant for writing streams of raw bytes such as image data. For writing streams of characters, consider using FileWriter.
En la API tienes muchas respuestas, pero mientras pases de leerlas no avanzarás nada.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.

Etiquetas: catch, 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 06:58.