Erreur NullPointerException !!

Erreur NullPointerException !! - Java - Programmation

Marsh Posté le 30-03-2006 à 00:52:32    

Bonsoir, je suis novice en java et je réalise une petite application de gestion de visas. J'utilise la technologie Swing pour mes interfaces et  
Oracle 10 g pour la base de données. Jusqu'ici tout fonctionnait bien mais j'ai une erreur d'execution qui me pourri la vie depuis 4 jours. Je  
n'en dors plus, j'ai tout essayé mais rien y fait. Voici mon erreur, mais je n'arrive pas à savoir à quelle niveau de l'éxecution elle intervient. Y'aurai  
t'il un débugger ou quelque chose comme ça qui pourrait m'aider à voir ou se trouve l'erreur. Merci de votre aide :
 
 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at SaisieClient.jbtn2ActionPerformed(SaisieClient.java:299)
        at SaisieClient.access$100(SaisieClient.java:15)
        at SaisieClient$2.actionPerformed(SaisieClient.java:266)
        at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
        at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
        at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Sour
ce)
        at java.awt.Component.processMouseEvent(Unknown Source)
        at javax.swing.JComponent.processMouseEvent(Unknown Source)
        at java.awt.Component.processEvent(Unknown Source)
        at java.awt.Container.processEvent(Unknown Source)
        at java.awt.Component.dispatchEventImpl(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
        at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
        at java.awt.Container.dispatchEventImpl(Unknown Source)
        at java.awt.Window.dispatchEventImpl(Unknown Source)
        at java.awt.Component.dispatchEvent(Unknown Source)
        at java.awt.EventQueue.dispatchEvent(Unknown Source)
        at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
 
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
        at java.awt.EventDispatchThread.run(Unknown Source)
 
 
Voici mes tables oracle :
 
 
/* creation de la table Administrateur */
CREATE TABLE administrateur (  
login VARCHAR2(30) NOT NULL
,mdp  VARCHAR2(30)  NOT NULL
);
 
/* creation des tables client */
CREATE TABLE client (
ID_client  NUMBER  NOT NULL primary key
,Nom_client  VARCHAR2(30)  NOT NULL
,Prenom_client  VARCHAR2(30)  NOT NULL
,Date_de_naissance  VARCHAR2(30)
,numrue   NUMBER
,voie    VARCHAR2(30)
,cp    NUMBER
,ville   VARCHAR2(30)
,civilite   VARCHAR2(30)
);
 
 
et le code java est le suivant :
 
ici une partie de la classe SaisieClient
 
 Admin ad = new Admin(); // pour acceder aux méthodes de la classe Admin
 private void jbtn2ActionPerformed(java.awt.event.ActionEvent evt) {  
 
 String nomcli=jEdit1.getText();
 String prenomcli=jEdit2.getText();
 String datecli=jEdit3.getText();
 String voicli=jEdit4.getText();
 int numcli=Integer.parseInt(jEdit44.getText());
 int cpcli=Integer.parseInt(jEdit5.getText());
 String villecli=jEdit6.getText();
 String civilitecli=jcbx1.getSelectedItem().toString();
 
try {
 ad.creerclient(nomcli,prenomcli,datecli,numcli,voicli,cpcli,villecli,civilitecli);
 JOptionPane.showMessageDialog(this, "Le nouveau client a été ajouté avec succès!" );
 //new SaisiePass().show();
        //setVisible(false);  
 
}
 
catch (Exception en){
JOptionPane.showMessageDialog(this, "Erreur de saisie, veuillez reprendre !" );
 
}
             
}
 
 
et ici la classe Admin :
public class Admin {
     
    private Connection conn;
    private Base maBase = new Base();    
     
    public Admin(){
        //Connexion à la base de données
        maBase.dbConnect();
        //Indique si la connexion est valide
        conn = maBase.getConn();
    }
   
 
    public String TestMotPasse(String login, String mdp){
        ResultSet rs;  
        try {
            //Exécution de la requête
            Statement st = conn.createStatement();
            String myquery= "SELECT mdp " +
                            "FROM administrateur " +  
                            "WHERE login = '" + login + "' AND mdp = '"+mdp+"'";
            rs = st.executeQuery(myquery);
            rs.next();
            return  rs.getString(1);
          }
         
         
        catch (Exception e) {
            System.out.println(e.toString());
            return "error";
        }
   }
 
       
 
    public void creerclient(String nomCli,String prenomCli,String dateCli,int numCli,String voiCli,int cp,String villeCli,String civiCli){
        String req = null;
        Statement st = null;
        try{
            req="INSERT INTO client VALUES" +
 " (seq_cli.nextval,'"+nomCli+"','"+prenomCli+"','"+dateCli+"',"+numCli+",'"+voiCli+"','"+cp+"','"+villeCli+"')";
            st = conn.createStatement();
            int rs = st.executeUpdate(req);
            //conn.close();    
        }
        catch(SQLException e){
           System.out.println(e.toString());
        }
    }
 
   
   
}
 
 

Reply

Marsh Posté le 30-03-2006 à 00:52:32   

Reply

Marsh Posté le 30-03-2006 à 01:20:42    

Ta qu'a mettre des if( machin != null ) partout :)


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
Reply

Marsh Posté le 30-03-2006 à 01:23:30    

oui mais ou partout ? je comprend pas. Tu peux m'expliquer ?

Reply

Marsh Posté le 30-03-2006 à 07:10:27    

le_bat75 a écrit :

Voici mon erreur, mais je n'arrive pas à savoir à quelle niveau de l'éxecution elle intervient. Y'aurai  
t'il un débugger ou quelque chose comme ça qui pourrait m'aider à voir ou se trouve l'erreur. Merci de votre aide :
 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at SaisieClient.jbtn2ActionPerformed(SaisieClient.java:299)


 
Comme tu peux le voir, le message d'erreur est assez explicite, tu devrais pouvoir trouver tout seul. Tu esssayes d'accèder à un objet qui n'est pas initialisé (càd qui vaut null, d'où le "NullPointerException" ), et l'erreur se trouve dans ta méthode "jbtn2ActionPerformed", à la ligne 229 du fichier SaisieClient.java.
 
Regardes donc ce que tu écris à la ligne 229 pour trouver ton erreur...

Reply

Marsh Posté le 30-03-2006 à 08:57:15    

file-nous la ligne 299 pour voir ? on va te la trouver en 10s l'erreur.
 
ça se produit soit sur la partie gauche de "a.b" (le a est null) soit sur a[b]  (le a est null) soit sur new NullPointerException(...).


Message édité par nraynaud le 30-03-2006 à 08:57:33
Reply

Marsh Posté le 30-03-2006 à 10:00:36    

String nomcli=jEdit1.getText();
 
Voici la ligne 299. apparement il n'aime pa

Reply

Marsh Posté le 30-03-2006 à 10:02:17    

jEdit1 est null


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 30-03-2006 à 10:19:29    

JLabel jLabel1 =new JLabel("Nom:" );
JTextField jEdit1 = new JTextField();
jLabel1.setLabelFor(jEdit1);
 
Voilz comment j'ai déclaré mon jEdit1.
Donc c bizzare qu'il soit nul vu que j'écrit une chaine dedans quand je lance mon interface.

Reply

Marsh Posté le 30-03-2006 à 10:26:07    

Teste la nullité de jEdit1 juste avant la ligne 299 et vois par toi même.


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 30-03-2006 à 10:55:13    

c'est pas le jedit1 qui est en cause ! on peut voir la déclaration de jbtn2 et le code de ActionPerformed ?

Reply

Marsh Posté le 30-03-2006 à 10:55:13   

Reply

Marsh Posté le 30-03-2006 à 10:56:38    

et ça serait bien d'utiliser des PreparedStatement au lieu de fabriquer la requete par concaténation

Reply

Marsh Posté le 30-03-2006 à 10:59:36    

JButton jbtn2 = new JButton("Suivant" );
 
ensuite j'ai :
 
 
 jbtn2.setMaximumSize(new java.awt.Dimension(85, 26));
     jbtn2.setMinimumSize(new java.awt.Dimension(85, 26));
     jbtn2.setPreferredSize(new java.awt.Dimension(100, 26));
 jbtn2.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbtn2ActionPerformed(evt);
            }
        });
 
et enfin :
 
 private void jbtn2ActionPerformed(java.awt.event.ActionEvent evt) {  
 String nomcli=jEdit1.getText();
 String prenomcli=jEdit2.getText();
 String datecli=jEdit3.getText();
 String voicli=jEdit4.getText();
 int numcli=Integer.parseInt(jEdit44.getText());
 int cpcli=Integer.parseInt(jEdit5.getText());
 String villecli=jEdit6.getText();
 String civilitecli=jcbx1.getSelectedItem().toString();
 
try {
 ad.creerclient(nomcli,prenomcli,datecli,numcli,voicli,cpcli,villecli,civilitecli);
 JOptionPane.showMessageDialog(this, "Le nouveau client a été ajouté avec succès!" );
 //new SaisiePass().show();
        //setVisible(false);  
 
}
 
catch (Exception en){
JOptionPane.showMessageDialog(this, "Erreur de saisie, veuillez reprendre !" );
 
}
             
}

Reply

Marsh Posté le 30-03-2006 à 11:26:15    

inclut tes affectations de chaines (nomcli, prenomcli...) dans le bloc try de ton ActionPerformed, et inclut le catch de NullPointerException !
fais de même dans ta fonction creerClient()
 
et voila pourquoi il ne faut JAMAIS catcher Exception !!! ça rend le débuggage chiant au possible
 
edit: et place ton code dans des balises code=java stp !

Message cité 2 fois
Message édité par Harkonnen le 30-03-2006 à 11:27:26
Reply

Marsh Posté le 30-03-2006 à 12:01:49    

Harkonnen a écrit :

c'est pas le jedit1 qui est en cause ! on peut voir la déclaration de jbtn2 et le code de ActionPerformed ?


 

Harkonnen a écrit :

inclut tes affectations de chaines (nomcli, prenomcli...) dans le bloc try de ton ActionPerformed, et inclut le catch de NullPointerException !
fais de même dans ta fonction creerClient()
 
et voila pourquoi il ne faut JAMAIS catcher Exception !!! ça rend le débuggage chiant au possible
 
edit: et place ton code dans des balises code=java stp !


http://bravepatrie.com/IMG/pub/pub_verticale_sarko.gif


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 30-03-2006 à 14:26:16    

Salut harkonnen, je viens de m'y remettre. J'ai inclu comme tu m'a dit les affectations de chaine dans mon try (pour creerClient() et dans le actionPerformed. Par contre je n'ai pas compris ou mettre le catch de NullPointerException, ni ce que c'est. Merci pour les réponses en tout cas.  

Reply

Marsh Posté le 30-03-2006 à 20:45:26    

ça tombe bien, faut pas le mettre.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-03-2006 à 21:04:12    

nraynaud et -- : c'est peut etre pas très propre, mais au moins ça permettrait de connaitre l'endroit exact où se produit l'exception, non ? quitte ensuite à l'enlever !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-03-2006 à 21:14:12    

non


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-03-2006 à 21:15:07    

bon sang, mais ne me dis pas que tu trouves le catch(Exception) propre ? [:mlc]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-03-2006 à 21:16:04    

non


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 30-03-2006 à 21:17:26    

ok lol


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-03-2006 à 21:21:09    

tu peux ptet apporter tes lumières alors ? non parce qu'il m'est arrivé d'avoir la même erreur, et comme lui il me donnait un n° de ligne sur un jButton soi disant null (alors qu'il ne l'était pas, test à l'appui), et avec cette méthode, j'ai fini par trouver que ça venait d'un truc qui n'avait rien à voir !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 30-03-2006 à 21:30:58    

J'ai essayé tout ce que vous disiez mais ça ne marche toujours pas. Je suis vraiment débutant en java (enfin si on peut dire ça vu que ça fait 5 jours que je suis dessus non stop), la je ne sais plus quoi faire. Faut il que j'enlève les try - catch ?

Reply

Marsh Posté le 30-03-2006 à 21:47:49    

bordel, prend Eclipse, compile avec et debugge avec. ça ferait longtemps que tu saurais ou ça plante en débuggant ligne par ligne. C'est pas fait pour rien quand même. Me dit pas que tu programmes en java avec notepad et que tu compiles en ligne de commande quand même.

Reply

Marsh Posté le 30-03-2006 à 21:49:27    

il est appellé dans quel thread ton  
JTextField jEdit1 = new JTextField();  
à quel moment ? c'est sûr qu'il est à l'écran ton bordel avant l'appui sur le bouton ?
http://java.sun.com/products/jfc/t [...] eads1.html

Reply

Marsh Posté le 30-03-2006 à 22:12:02    

pour moi23372 : oui je compile en ligne de commande.  
 
Pour ce qui est du reste voila comment j'ai structuré mon truc :
 

Code :
  1. public class SaisieClient extends javax.swing.JFrame {
  2. Admin ad=new Admin();
  3.    
  4.     public SaisieClient() {
  5.         Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
  6.      
  7. // ici y'a du code pour placer les frames..Etc
  8.         initComponents();
  9.     }
  10.  private void initComponents() {
  11.       java.awt.GridBagConstraints gridBagConstraints;
  12. JLabel jint =new JLabel("VEUILLEZ ENTRER LES INFORMATIONS DU CLIENT:" );
  13. JLabel jLabel0 =new JLabel("Civilite:" );
  14. JComboBox jcbx1 = new JComboBox();
  15. jLabel0.setLabelFor(jcbx1);
  16. jcbx1.addItem("Mr" );
  17. jcbx1.addItem("Mme" );
  18. jcbx1.addItem("Mlle" );
  19.    
  20. JLabel jLabel1 =new JLabel("Nom:" );
  21. JTextField jEdit1 = new javax.swing.JTextField();
  22. jLabel1.setLabelFor(jEdit1);
  23. // ici y'a les autres champs..etc
  24.             // La le fameux bouton
  25. JLabel jLabel10 =new JLabel("" );
  26. JButton jbtn2 = new JButton("Suivant" );
  27.              // ensuite je place dans la fenetre
  28. gridBagConstraints = new java.awt.GridBagConstraints();
  29.      gridBagConstraints.gridx = 0;
  30.      gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
  31.      gridBagConstraints.insets = new java.awt.Insets(17, 38, 5, 32);
  32.      getContentPane().add(jLabel1, gridBagConstraints);
  33. jEdit1.setMaximumSize(new java.awt.Dimension(85, 26));
  34.      jEdit1.setMinimumSize(new java.awt.Dimension(85, 26));
  35.      jEdit1.setPreferredSize(new java.awt.Dimension(100, 26));
  36. gridBagConstraints = new java.awt.GridBagConstraints();
  37. gridBagConstraints.gridwidth=GridBagConstraints.REMAINDER;
  38.      gridBagConstraints.fill = java.awt.GridBagConstraints.NONE;
  39.      gridBagConstraints.insets = new java.awt.Insets(17, 38, 5, 32);
  40. getContentPane().add(jEdit1, gridBagConstraints);
  41.            // la pareil pour mes autres champs  
  42.           // la je place le bouton qui doit insérer dans la base
  43. jbtn2.setMaximumSize(new java.awt.Dimension(85, 26));
  44.      jbtn2.setMinimumSize(new java.awt.Dimension(85, 26));
  45.      jbtn2.setPreferredSize(new java.awt.Dimension(100, 26));
  46. jbtn2.addActionListener(new java.awt.event.ActionListener() {
  47.         public void actionPerformed(java.awt.event.ActionEvent evt) {
  48.                 jbtn2ActionPerformed(evt);
  49.             }
  50.         });
  51. gridBagConstraints = new java.awt.GridBagConstraints();
  52. gridBagConstraints.gridwidth=GridBagConstraints.REMAINDER;
  53.      gridBagConstraints.fill = java.awt.GridBagConstraints.NONE;
  54.      gridBagConstraints.insets = new java.awt.Insets(17, 38, 5, 32);
  55. getContentPane().add(jbtn2, gridBagConstraints);
  56.  
  57. pack();
  58.  }
  59. private void exitForm(java.awt.event.WindowEvent evt) {
  60.         System.exit(0);
  61.        }
  62.            // Voici ensuite le comportement de mon bouton
  63. private void jbtn2ActionPerformed(java.awt.event.ActionEvent evt) {
  64. try {
  65. String nomcli=jEdit1.getText();
  66. String prenomcli=jEdit2.getText();
  67. String datecli=jEdit3.getText();
  68. String voicli=jEdit4.getText();
  69. int numcli=Integer.parseInt(jEdit44.getText());
  70. int cpcli=Integer.parseInt(jEdit5.getText());
  71. String villecli=jEdit6.getText();
  72. String civilitecli=jcbx1.getSelectedItem().toString();
  73. ad.creerclient(nomcli,prenomcli,datecli,numcli,voicli,cpcli,villecli,civilitecli);
  74. JOptionPane.showMessageDialog(this, "Le nouveau client a été ajouté avec succès!" );
  75. }
  76. catch (Exception en){
  77. JOptionPane.showMessageDialog(this, "Erreur de saisie, veuillez reprendre !" );
  78. }
  79.            
  80. }
  81.                        // Et enfin en dessous je fait les déclarations
  82. private javax.swing.JTextField jEdit1;
  83. private javax.swing.JTextField jEdit2;
  84. private javax.swing.JTextField jEdit3;
  85. private javax.swing.JTextField jEdit4;
  86. private javax.swing.JTextField jEdit44;
  87. private javax.swing.JTextField jEdit5;
  88. private javax.swing.JTextField jEdit6;
  89. private javax.swing.JComboBox jcbx1;
  90.  
  91. }


 
Voila ça c'est pour ce qui est de la classe SaisieClient. La class Admin elle est la :
 

Code :
  1. import java.sql.*;
  2. import java.*;
  3. import java.io.*;
  4. import java.util.*;
  5. import java.text.*;
  6. import java.awt.event.*;
  7. public class Admin {
  8.    
  9.     private Connection conn;
  10.     private Base maBase = new Base(); 
  11.    
  12.     public Admin(){
  13.         //Connexion à la base de données
  14.         maBase.dbConnect();
  15.         //Indique si la connexion est valide
  16.         conn = maBase.getConn();
  17.     }
  18.  
  19.     public void creerclient(String nomCli,String prenomCli,String dateCli,int numCli,String voiCli,int cp,String villeCli,String civiCli){
  20. String req;
  21.              Statement st = null;
  22. int rs;
  23.         try{
  24.             req="INSERT INTO client VALUES" +
  25. " (seq_cli.nextval,'"+nomCli+"','"+prenomCli+"','"+dateCli+"',"+numCli+",'"+voiCli+"',"+cp+",'"+villeCli+"','"+civiCli+"')";
  26.             st = conn.createStatement();
  27.             rs = st.executeUpdate(req);
  28.         }
  29.          catch(SQLException e){
  30.             System.out.println(e.toString());
  31.         }
  32.     }
  33. }


 
Voila, donc moi quand j'ai ma fenêtre SaisieClient devant moi je rempli les champs, et ensuite je valide avec le bouton. Visiblement ça marche pas, même en ayant modifier certaines chose (en enlevant les catch et en plaçant les déclaration dans les try)
 
J'espère que j'ai répondu à ta question sur les threads.

Reply

Marsh Posté le 30-03-2006 à 22:46:24    

le_bat75 a écrit :

pour moi23372 : oui je compile en ligne de commande.  
 
Pour ce qui est du reste voila comment j'ai structuré mon truc :
 

Code :
  1. JTextField jEdit1 = new javax.swing.JTextField();


 
Voila, donc moi quand j'ai ma fenêtre SaisieClient devant moi je rempli les champs, et ensuite je valide avec le bouton. Visiblement ça marche pas, même en ayant modifier certaines chose (en enlevant les catch et en plaçant les déclaration dans les try)
 
J'espère que j'ai répondu à ta question sur les threads.


 
en écrivant JTextField jEdit1 = ...
au lieu de jEdit1 = ...
 
tu as créé une nouvelle variable locale du même nom que ton champ, et c'est elle qui a été affectée et pas le champ, qui est resté null.
 
une simple erreur d'innatention.

Reply

Marsh Posté le 30-03-2006 à 23:24:38    

Bon j'ai réessayer, avec ce que tu as dit ça marche. Je te remercie beaucoup ainsi que tout ceux qui m'ont aider. Je n'aurai certainement jamais trouver tout seul. encore une fois merci :)

Reply

Marsh Posté le 31-03-2006 à 23:02:26    

Harkonnen a écrit :

inclut tes affectations de chaines (nomcli, prenomcli...) dans le bloc try de ton ActionPerformed, et inclut le catch de NullPointerException !
fais de même dans ta fonction creerClient()

 

et voila pourquoi il ne faut JAMAIS catcher Exception !!! ça rend le débuggage chiant au possible

 

edit: et place ton code dans des balises code=java stp !


Si tu savais te servir de ton debugger, tu n'ecrirais pas ce genre de conneries.. Car bien evidemment, il faut catcher Exception (en dernier lieu, apres avoir catcher tous les autres types d'exceptions prevues dans ton code) si tu veux ecrire des programmes robustes. Parce que se taper tous les try/catch à la fin de ton projet pour rajouter catch(Exception e) {...} tres peu pour moi.

 

Pour info, eclipse te permet de specifier des breakpoint sur le lancement d'exceptions, que ça soit une exception particuliere ou bien toutes les exceptions  (le debugger te donne la main "juste avant" que l'exception soit levée, ce qui te permet d'agir en conséquence). J'ose esperer que les autres edi fournissent la meme fonctionnalité.

 



---------------
.
Reply

Marsh Posté le 31-03-2006 à 23:03:45    

[:trofub]


Message édité par the real moins moins le 31-03-2006 à 23:10:35

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 31-03-2006 à 23:10:40    

patapon a écrit :

Si tu savais te servir de ton debugger, tu n'ecrirais pas ce genre de conneries.. Car bien evidemment, il faut catcher Exception (en dernier lieu, apres avoir catcher tous les autres types d'exceptions prevues dans ton code)


c'est bien ce que je fais... ce que je voulais dire c'est qu'il ne faut pas catcher QUE Exception comme l'a fait lebat... si je fais une transaction sur une base, je vais catcher SQLException, et éventuellement Exception à la fin ! :sarcastic:


Message édité par Harkonnen le 31-03-2006 à 23:11:13

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 31-03-2006 à 23:27:31    

patapon a écrit :

Si tu savais te servir de ton debugger, tu n'ecrirais pas ce genre de conneries.. Car bien evidemment, il faut catcher Exception (en dernier lieu, apres avoir catcher tous les autres types d'exceptions prevues dans ton code) si tu veux ecrire des programmes robustes.


Quelqu'un peut m'expliquer en quoi catcher "Exception" rend un programme plus robuste [:petrus dei]
 
"Ah merde il y a eu une erreur non prévue, planquons là vite sous le tapis et essayons de continuer comme si de rien n'était ça se verra peut être pas" j'appelle pas ça de la robustesse mais bon [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 31-03-2006 à 23:32:26    

bah, disons que ça permet d'afficher un joli JOptionPane avec un message genre "Erreur inattendue, le programme va quitter" au lieu d'une stacktrace, éventuellement de faire un rollback d'une transaction en cours (mais il me semble qu'une exception déclenche un rollback automatique, à confirmer. moi dans le doute, j'en fais toujours un).
mais à part ça, je vois pas d'autre intéret...


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 01-04-2006 à 01:55:08    

Harkonnen a écrit :

bah, disons que ça permet d'afficher un joli JOptionPane avec un message genre "Errensaction en cours


ben t'as les handlers au niveau groupe de thread pour ça.
 

Harkonnen a écrit :

dans le doute, j'en fais toujours un


[:pingouino] elle doivent être belles tes transactions imbriquées ...

Reply

Marsh Posté le 01-04-2006 à 02:16:21    

nraynaud a écrit :


[:pingouino] elle doivent être belles tes transactions imbriquées ...


je n'en fais que dans les transactions uniques :D


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 02-04-2006 à 09:26:42    

harko > nan, mais vraiment, fais pas le con avec les transaction, va lire la norme/spec/doc de machin que tu utilises pour avoir des certitudes, tu cours à la cata avec ce genre de comportements.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed