2010-07-13 4 views
1

Voici le code que je utilise:Aide avec le premier programme de sérialisation

public class Ser implements Serializable { 
int x,y; 
String name; 
public Ser(int a, int b, String c) { 
    x=a; 
    y=b; 
    name = c; 
    } 
} 

import java.io.*; 

public class testSer { 
public static void main(String[] args) { 
    FileOutputStream testStream = new FileOutputStream("serText.ser"); 
    ObjectOutputStream testOS = new ObjectOutputStream(testStream); 
    Ser objTest = new Ser(1,2, "Nikhil"); 
    testOS.writeObject(objTest); 
    testOS.close(); 
    } 
} 

Voici les erreurs que je reçois:

Errors http://i29.tinypic.com/2weauzt.jpg

J'ai créé le fichier * .ser manuellement dans le dossier (bien que le livre indique que le compilateur en crée automatiquement un) mais le problème persiste.

RELP!

Répondre

3

Vous n'êtes pas traiter IOException. Vous devez l'attraper ou le lancer explicitement.

try{ 
    // Your code 
}catch(IOException e){ 
    // Deal with IOException 
} 

ou

public static void main(String[] args) throws IOException{ 
    // Your code 
} 

Tout cela est une conséquence de Java ayant checked exceptions, dont IOException est l'un. Pour vos besoins, le second est probablement très bien, car une panne d'E/S ne peut pas vraiment être récupérée à partir de. Dans les programmes plus volumineux, vous aurez presque certainement besoin de vous remettre des défaillances E/S transitoires et donc le premier serait plus approprié.

4

Vous avez besoin de traiter avec IOException, soit en l'attrapant, soit en lançant depuis le principal. Pour un programme simple, lancer est probablement très bien:

public static void main(String[] args) throws IOException 
+1

Pour être précis, mettez un try/catch autour du code ou indiquez que main lance IOException. Vous devriez faire le développement dans un IDE (comme Eclipse (qui est gratuit)). L'avantage de ceci est qu'un IDE vous donnera des avertissements/erreurs et offrira des solutions à des problèmes tels que celui-ci. – Syntax

+0

Cela a fonctionné, mais pourquoi je dois lancer une exception si j'ai déjà créé le fichier? – MoonStruckHorrors

+2

Vous dites que votre programme * peut * lancer une exception. La plupart du temps, ce ne sera pas le cas, mais il y a toutes sortes d'erreurs d'E/S possibles. Par exemple, imaginez si vous avez manqué d'espace disque. –

1

Vous devez utiliser un bloc try/catch, en gérant les exceptions déclarées comme levées dans les méthodes que vous utilisez. Il vaudrait la peine de lire sur exception handling.