Pregunta con Try y catch?

Iniciado por Slider324, 22 Diciembre 2012, 09:06 AM

0 Miembros y 1 Visitante están viendo este tema.

Slider324

Hola estoy creando un programa que toma proxys de varios sitios pero tengo un problema supongamos que cargo la lista de sitios en un JtextArea despues con un try y catch hago lo siguiente:

           
               try{
               //Almacenamos Area de Texto en una String
               String todo = jTextArea1.getText().
                       replaceAll("https", "http");

               //usamos st para separar por espacio cada url y leer 1 por 1
               StringTokenizer st = new StringTokenizer(todo, "\n");

               //Recorremos Urls
               while (st.hasMoreTokens()) {
                   URL url = new URL(st.nextToken());

                   //Almacenamos Buffer
                   BufferedReader brd = new BufferedReader(new InputStreamReader(url.openStream()));

                   //Guardamos Resultado de Buffer
                   linea = brd.readLine();

                   //Leemos respuesta
                   StringBuffer respuesta = new StringBuffer();

                   while (linea != null) {
                       respuesta = respuesta.append(linea);
                       linea = brd.readLine();
                   }

                   //Definimos lo que vamos a buscar
                   pattern = "([0-9]{1,4}\\.)+[0-9]{1,4}\\:[0-9]{1,4}";

                   //definimos matcher y lo convertimos a String
                   matcher = Pattern.compile(pattern).matcher(respuesta.toString());

                   //Decimos a matcher que empieze a buscar
                   while (matcher.find()) {
                       resultado = matcher2.group().
                               //Definimos que deseamos remover
                               replaceAll("javascript:.*", "").
                               replaceAll("l0k9j8h7-87f3c96803f53f1496a6de3:.*", "").
                               replaceAll("mailto:.*", "")
                               + "\n";

                       hs.add(resultado);
                   }

                   //Creamos un iterator para poder reccorer el HashSet
                   java.util.Iterator<String> it = hs.iterator();

                   //Recorremos iterator hasta el final
                   while (it.hasNext()) {
                       //Añadimos lo que tiene el iterator
                       jTextArea2.append(it.next());

                       //Limpiamos Iterator
                       it.remove();
                   }

                   //Limpiamos Hash Set
                   hs.clear();

             } catch (Exception e2) {

               //Mostramos Mensaje si la pagina no funciona
               System.out.println("No Funciona la pagina");
           }


Ahora el problema que tengo es que supongamos que una pagina no carga o esta caida, el programa se termina y no continua con la lista espero me puedan ayudar mi pregunta es como puedo continuar con la lista de sitios del programa aunque alguna pagina este mal saludos y gracias por su ayuda :D

$Edu$

No pongas el Try-Catch ahi sacalo, ponelo dentro del bucle While donde recorres las Urls, cosa que si da error sigue con la otra. Despues seguira haciendo cosas con las que andan.

RobHalford

Cita de: $Edu$ en 22 Diciembre 2012, 15:18 PM
No pongas el Try-Catch ahi sacalo, ponelo dentro del bucle While donde recorres las Urls, cosa que si da error sigue con la otra. Despues seguira haciendo cosas con las que andan.

Hola.

Así es, estás utilizando el Try/Catch de forma muy general, si falla algo, esté donde esté el programa ejecutándose se abortará.

Para solucionarlo debes poner el bloque try/catch dentro del bucle " while (st.hasMoreTokens()) {" de modo que si falla uno, continúe con el siguiente y no se aborte todo el proceso.

Slider324

Muchas gracias por su ayuda nunca hubiera dado con el error llevo muy poco en java y no encontraba la forma muchas gracias a los 2  ;-) ;-)