éviter les erreurs en rouge dans la console

L’auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour pourquoi ai-je une erreur en rouge dans la console à l’exécution pour ce code-ci ?…

Je pensais qu’un try catch ferait disparaitre l’erreur…

try  {
    FileInputStream file = new FileInputStream("test.serial");
    ObjectInputStream ois = new ObjectInputStream(file);
    player = (People) ois.readObject();
    ois.close();
}
catch (IOException | ClassNotFoundException) {
    
}
finally {
    
}

java.io.FileNotFoundException: test.serial (Le fichier spécifié est introuvable)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at java.io.FileInputStream.<init>(Unknown Source)
at model.Game.readPlayer(Game.java:122)

Je comprends qu’il ne trouve pas le fichier, mais c’est "normal" au démarrage du jeu puisque aucune sauvergarde n’a encore été faite…

Édité par marius007

+0 -0

Cette réponse a aidé l’auteur du sujet

Salut,

Si c’est « normal » qu’il ne trouve pas le fichier, ça veut dire que tu n’es pas censé exécuter ce bout de code si le fichier n’existe pas. Tu peux par exemple effectuer un test sur la présence du fichier pour lire le contenu du fichier uniquement si le fichier existe.

À+

+0 -0
Auteur du sujet

merci c’est corrigé (mais peut-être pas optimisé) :

try  {
    String fileName = "test.serial";
    File file = new File(fileName);
    if (!file.exists() || file.isDirectory()) {
        return;
    }
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName));
    player = (People) ois.readObject();
    ois.close();
}
catch (IOException | ClassNotFoundException) {
    
}

Édité par marius007

+0 -0
Auteur du sujet

Salut,

Pour ce genre d’opération, mieux vaut tenter l’opération et catch si il y a un problème. En effet, il pourrait y avoir un changement entre le test si le fichier existe et l’opération.

tleb

Tout le code est dans un try catch, est ce suffisant?

+0 -0

Cette réponse a aidé l’auteur du sujet

Salut,

D’une part, pourquoi effectue un catch de ClassNotFoundException ? En théorie, ça ne devrait jamais arriver de ne pas trouver la classe si ton exécutable est correctement formé.

Tu fais un catch(IOException) qui peut se produire si tu as un problème de lecture sur le disque par exemple. Si ça arrive, tu vas aller dans le catch, mais tu ne vas rien faire. Dans ces cas là, il faudrait au moins afficher une erreur à l’utilisateur, ou logguer l’exception. Globalement, ce n’est pas conseillé d’effectuer un catch vide.

Enfin, je te conseille de limiter au maximum la portée du try-catch. C’est-à-dire que une IOException ne sera lancée qu’au moment de la lecture du fichier, tu peux mettre le try juste avant la ligne 7, ça fera tout aussi bien le boulot et ça sera plus clair je pense. ;)

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte