éviter les erreurs en rouge dans la console

Le problème exposé dans ce sujet a été résolu.

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…

+0 -0

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.

À+

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) {
    
}
+0 -0

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. ;)

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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