Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1663 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Erreur NullPointerException !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Erreur NullPointerException !!

n°1335196
le_bat75
Posté le 30-03-2006 à 00:52:32  profilanswer
 

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());
        }
    }
 
   
   
}
 
 

mood
Publicité
Posté le 30-03-2006 à 00:52:32  profilanswer
 

n°1335204
Chronoklaz​m
Posté le 30-03-2006 à 01:20:42  profilanswer
 

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


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1335208
le_bat75
Posté le 30-03-2006 à 01:23:30  profilanswer
 

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

n°1335229
post_it
Hmmmm!...
Posté le 30-03-2006 à 07:10:27  profilanswer
 

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

n°1335250
nraynaud
lol
Posté le 30-03-2006 à 08:57:15  profilanswer
 

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
n°1335291
le_bat75
Posté le 30-03-2006 à 10:00:36  profilanswer
 

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

n°1335293
nraynaud
lol
Posté le 30-03-2006 à 10:02:17  profilanswer
 

jEdit1 est null


---------------
trainoo.com, c'est fini
n°1335316
le_bat75
Posté le 30-03-2006 à 10:19:29  profilanswer
 

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.

n°1335322
masklinn
í dag viðrar vel til loftárása
Posté le 30-03-2006 à 10:26:07  profilanswer
 

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
n°1335351
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 10:55:13  profilanswer
 

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

mood
Publicité
Posté le 30-03-2006 à 10:55:13  profilanswer
 

n°1335353
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 10:56:38  profilanswer
 

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

n°1335358
le_bat75
Posté le 30-03-2006 à 10:59:36  profilanswer
 

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 !" );
 
}
             
}

n°1335398
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 11:26:15  profilanswer
 

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
n°1335440
nraynaud
lol
Posté le 30-03-2006 à 12:01:49  profilanswer
 

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
n°1335534
le_bat75
Posté le 30-03-2006 à 14:26:16  profilanswer
 

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.  

n°1335836
the real m​oins moins
Posté le 30-03-2006 à 20:45:26  profilanswer
 

ça tombe bien, faut pas le mettre.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1335876
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 21:04:12  profilanswer
 

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)
n°1335880
the real m​oins moins
Posté le 30-03-2006 à 21:14:12  profilanswer
 

non


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1335881
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 21:15:07  profilanswer
 

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


---------------
J'ai un string dans l'array (Paris Hilton)
n°1335882
the real m​oins moins
Posté le 30-03-2006 à 21:16:04  profilanswer
 

non


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1335883
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 21:17:26  profilanswer
 

ok lol


---------------
J'ai un string dans l'array (Paris Hilton)
n°1335885
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 30-03-2006 à 21:21:09  profilanswer
 

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)
n°1335888
le_bat75
Posté le 30-03-2006 à 21:30:58  profilanswer
 

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 ?

n°1335895
moi23372
Posté le 30-03-2006 à 21:47:49  profilanswer
 

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.

n°1335896
nraynaud
lol
Posté le 30-03-2006 à 21:49:27  profilanswer
 

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

n°1335911
le_bat75
Posté le 30-03-2006 à 22:12:02  profilanswer
 

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.

n°1335931
nraynaud
lol
Posté le 30-03-2006 à 22:46:24  profilanswer
 

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.

n°1335947
le_bat75
Posté le 30-03-2006 à 23:24:38  profilanswer
 

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 :)

n°1336756
patapon
I Was Here
Posté le 31-03-2006 à 23:02:26  profilanswer
 

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é.

 



---------------
.
n°1336757
the real m​oins moins
Posté le 31-03-2006 à 23:03:45  profilanswer
 

[:trofub]


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

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°1336762
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 31-03-2006 à 23:10:40  profilanswer
 

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)
n°1336770
masklinn
í dag viðrar vel til loftárása
Posté le 31-03-2006 à 23:27:31  profilanswer
 

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
n°1336772
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 31-03-2006 à 23:32:26  profilanswer
 

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)
n°1336812
nraynaud
lol
Posté le 01-04-2006 à 01:55:08  profilanswer
 

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

n°1336816
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 01-04-2006 à 02:16:21  profilanswer
 

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)
n°1337242
nraynaud
lol
Posté le 02-04-2006 à 09:26:42  profilanswer
 

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.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Erreur NullPointerException !!

 

Sujets relatifs
erreur non identifiée[Bug Firefox]renvoyer un mess d'erreur
cellules calcul erreur ###Erreur que je trouve pas...
[PHP] erreur[PHP/SQL] erreur sql
[Résolu] Erreur internet explorer sur forum phpbberreur dans base ...!!
erreur Notice: Undefined index en PHP ?[PHP] erreur unexpected $
Plus de sujets relatifs à : Erreur NullPointerException !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR