Bonjour,
tout d'abord, Eclipse ne repère pas "avant de compiler": il compile au fur et à mesure que tu sauvegardes ton fichier, et t'indique donc les erreurs de compilation au fur et à mesure. Il s'agit ici bien d'une erreur de compilation.
l'erreur de compilation est due au fait que la ligne
FileInputStream fis = new FileInputStream(abcFile);
est susceptible de générer une exception de type "FileNotFound" lors de l'exécution, par exemple si le dossier ABC n'existe pas. Ca ne veut pas dire que tel ou tel fichier n'existe pas, ça veut dire qu'au moment de l'exécution du programme, cette ligne pourrait partir en erreur si le fichier n'existe pas
Cependant en java tu es OBLIGE de gérer les exceptions, soit en rajoutant dans la signature de ta fonction
ce que tu as fait,
soit en entourant la ligne en question d'un try/catch:
1 2 3 4 5 6 7
|
try{
File abcFile = new File ("/Users/nicolas/Desktop/Harmonisation/ABC/tutorialsong.abc");
}
catch(FileNotFoundException e){
// Ici on met du code qui gère l'exception d'une manière ou d'une autre (en créant le dossier, en quittant le programme avec une erreur, le choix t'appartient)
} |
En règle générale, c'est une très mauvaise pratique de déclarer un throws dans une méthode main.
En effet, le "throws" signifie grosso modo "Je ne suis pas capable de traiter cette exception, je vais donc partir en erreur et la transmettre à la méthode qui m'a appellée".
Or dans le cas du main, comme c'est le point d'entrée du programme, à priori personne ne l'a appellée. L'erreur va donc remonter jusqu'en haut ton programme va partir en erreur "bêtement" (c'est à dire, sans message d'erreur approprié).
Partager