Bonsoir !
Je le tourne vers vous car, bien que je comprenne l'erreur et que je vois d'où elle vient, je n'ai aucune idée de pourquoi mes réparations n'y font rien!
Mon code est le suivant :
L'erreur est la suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 /** * Cette méthode sert à filtrer les url récoltées, elle transforme les liens relatifs en url utilisables * * @param urlBase l'url de base du site (ex : "https://www.youtube.com" * @param urlRecup l'url que l'on a récupéré (ex : "/profile/videos") * @throws IOException */ public static void filtre(String urlBase, String urlRecup) throws IOException { try { //if(ligne.length()==0) { //System.out.println("Url Vide"); //} if(urlRecup.charAt(0)=='/') { //si c'est un lien relatif... Crt_or_update.Crt_of_update(urlBase+urlRecup, false); } else { Crt_or_update.Crt_of_update(urlRecup, false); } } catch(java.lang.ArrayIndexOutOfBoundsException e) { e.printStackTrace(); System.out.println("Url vide"); } }
Le programme télécharge l'url qu'on entre, inspecte la page html et récupère les hyperliens en isolant le contenu du "href" des balises <a>.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Entrez l'URL https://www.liberation.fr/ https:--www.liberation.fr-.html Registre complété Extraction de la ligne 639 : <ahref=""class="alert-nav-labeljs-alert-link"><spanclass="js-alert-title"></span></a> contenu extrait : Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 0 at java.lang.String.charAt(String.java:658) at LinkFinder.filtre(LinkFinder.java:67) at LinkFinder.SearchAndIndex(LinkFinder.java:37) at Launch.main(Launch.java:17)
On envoie ensuite le contenu dans un filtre (le code que apparent). Puis on gère les erreurs pour faire ressortir un lien tout beau.
Or, sur cette page, un href est vide. Et, puisque on cherche le caractère en position 0, et que la chaine de caractère est vide, il y a une erreur.
La question est pourquoi cette exception ne marche pas??? J'ai même essayer de la gérer par un if, mais rien ne fonctionne!
Quelqu'un aurait une idée?
Merci d'avance!
Partager