ActionPerformed et exception

cs_harleen Messages postés 22 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 20 juillet 2009 - 9 juil. 2009 à 11:54
cs_harleen Messages postés 22 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 20 juillet 2009 - 9 juil. 2009 à 15:19
Bonjour à tous,


Après recherche google et forum infructueuse, je fais appel à votre aide...


Je travaille actuellement sur une appli de conversion qui a deux boutons :

par exemple comme pour les convertisseurs : €->francs et francs ->€


Je crée un listener par bouton, avec pour chaque listener la méthode actionPerformed associée au mécanisme de traduction.


Je dois sélectionner un fichier à traduire, puis chercher un endroit où
créer mon fichier traduit à l'aide du bouton de traduction.

Cela marche pour le moment, seulement dans les cas où je crée les fichiers où j'ai tous les droits.


Or, dans le cas où je n'ai pas le droit de créer (répertoires systèmes
par exemple), j'ai un ensemble de lignes d'erreurs avec le message
d'exception java.io.FileNotFoundException.(Accès refusé).

Or, j'ai tenté de mettre le bloc try/catch suivant dans ma méthode

actionPerformed:

 
try{
ensemble d'instructions
}
catch (FileNotFoundException e){
e.printStackTrace();
}

sans succès.


De même, en testant avec la clause throws, j'ai eu un message comme
quoi la méthode actionPerformed n'était pas compatible avec les
exceptions.J'ai alors crée une méthode intermédiaire appelée par
actionPerformed...sans succès...


Si vous avec quelconque piste ou indication à ce sujet, je suis à votre écoute,

en vous remerciant d'avance

Harleen

7 réponses

kirua12 Messages postés 1155 Date d'inscription samedi 17 janvier 2004 Statut Membre Dernière intervention 29 avril 2011 7
9 juil. 2009 à 12:29
Salut,

que veux tu dire par 'sans succés' ? as tu essayé avec un catch sur IOException ?
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 juil. 2009 à 12:46
Salut,

Le fait que tu fasse un try catch ne t'enlèvera pas l'erreur, c'est juste à toi de la traîter correctement : si tu n'as pas le droit d'accès en écriture sur un dossier, ce n'est pas grâce au try catch que tu arriveras miraculeusement à créer ton dossier dedans !

Quand à "j'ai tenté de mettre le bloc try/catch suivant dans ma méthode sans succès.", je vois pas en quoi tu n'as pas de succès : tu fais un printStackTrace, donc il t'affiche la stack trace dans la console lorsqu'il y a une exception, c'est normal !
0
cs_harleen Messages postés 22 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 20 juillet 2009
9 juil. 2009 à 13:52
Salut à vous et merci de m'avoir répondu,

Pour répondre à Darksidious, je sais que je n'ai aps accès en écriture et justement, je n'espérais pas que j'arriverai "miraculeusement à créer mon dossier dedans", mais j'ai fait un  :
System.out.println("message_erreur"); dans le catch et celui-ci ne s'affiche pas...

Evidemment, je sais que l'utilisateur ne pourra créer ce qu'il veut où il veut, mais je voulais justement afficher un message d'erreur pour l'informer qu'il ne pouvait pas écrire à cet endroit.

Comment rendre possible cet affichage sans avoir les nombreuses lignes rouges d'erreur que j'ai actuellement et qui informent justement que je ne peux pas écrire à cet endroit?
Harleen
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
9 juil. 2009 à 14:08
En remplaçant le e.printStackTrace(); par tes instructions, et en catchant la bonne exception.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_harleen Messages postés 22 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 20 juillet 2009
9 juil. 2009 à 14:42
salut,

Toujours pas...j'ai enlevé le e.printStackTrace et remplacé par un System.out.println("");, mais j'ai toujours la liste de lignes d'erreurs qui sd'affichent dans ma console...
Harleen
0
cs_harleen Messages postés 22 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 20 juillet 2009
9 juil. 2009 à 14:46
Si cela peut aider à mieux voir le problème, voici le code de ma classe  :

    class BoutonTradSimpleListener  implements ActionListener{

        public void actionPerformed(ActionEvent arg0){
            BoutonSimpleService();
        }
       
        private void BoutonSimpleService(){
            //fichier d'entrée et de sortie en récupérant les contenus des zones de txt
        inputFile = new File(txtlocalPath.getText());
        outputFile = new File(txtSortie.getText());
       
        System.out.println(inputFile);
        System.out.println(outputFile);
       
        //récupérer le contenu de la textBox et traduire   
        // System.setProperty("javax.xml.transform.TransformerFactory",
        //"net.sf.saxon.TransformerFactoryImpl");
       
        //on crée une fabrique de transformeurs
        TransformerFactory factory = TransformerFactory.newInstance();
       
        //fichier xsl de transformation
        File fxsl = new File("transfo.xsl");       
       
        //fichier xml source de type source       
            Source xmlSource = new StreamSource(inputFile);
           
        //nom du fichier de sortie de type Result  :
        //on choisit le constructeur avec File   
           
            Result sortie = new StreamResult(outputFile);
           
        //transformer
        Transformer transformer;
        try {
            //on récupère un transformeur à partir d'une fabrique de transformeurs
            transformer = factory.newTransformer(new StreamSource(fxsl));

            //encoding
            // transformer.setOutputProperty("encoding", "ISO-8859-1");
            transformer.setOutputProperty("encoding", "UTF-8");
           
            //pour l'indentation
            transformer.setOutputProperty(OutputKeys.INDENT,"yes");
           
            /*Utilisation d'un parser DOM ou SAX sans DTD ou xml schema pour la validation,
             * s'il ya une erreur de parsing alors le fichier XML n'est pas bien formé càd NON XML.
             */
            DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();           
            DocumentBuilder constructeur = fabrique.newDocumentBuilder();           
           
            // lecture du contenu du fichier d'entrée XML avec DOM
            File xml = new File(inputFile.getName());
            Document document = constructeur.parse(xml);
           
            //transformation en prenant en paramètre le fichier xml source et fait le fichier xml de sortie           
            transformer.transform(xmlSource, sortie );
           
            //message informant que la traduction a bien été faite
            message_erreur.setText("Traduction simple effectuée");
            message_erreur.setForeground(Color.green);

            btntradcomplique.setEnabled(false);
            btntradsimple.setEnabled(false);

        }
        catch(FileNotFoundException e){
            System.out.println("erreur 1 ");
        }
        catch (TransformerConfigurationException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch(SAXException se){
            //C'est un fichier Non Xml
        }catch(IOException ioe){
            System.out.println("erreur 2");       
        }     
           
        }
       
    }//fin de la classe BoutonTradSimpleListener

Harleen
0
cs_harleen Messages postés 22 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 20 juillet 2009
9 juil. 2009 à 15:19
J'ai pensé à utiliser la méthode canWrite de la classe File, mais cela ne mène à rien...
Harleen
0
Rejoignez-nous