Bonjour,
Sur un programme tournant sur Solaris avec la JVM Sun 1.4.2-b28 j'ai une erreur que je ne comprend pas et que je n'arrive pas à reproduire.
Voici mon code:
Lorsque cette function est exécutée avec les paramètres suivants il arrive (une fois sur 1000 environ) que cela plante. Si je relance le traitement, ça marche, c'est vraiment aléatoire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 public static Date convertAS400DateTime2JavaDateTime(String as400DateTime,String as400Date,String as400Time,String canReturnNull) { Date javaDate = null; if(as400DateTime==null || as400DateTime.trim().equals("0") || as400DateTime.trim().length()==0) { if(as400Date!=null && as400Date.trim().length()==8) { StringBuffer as400DateTimeBuffer = new StringBuffer(as400Date.trim()); if(as400Time==null || as400Time.trim().equals("")) as400DateTimeBuffer.append("000000"); else { as400Time = as400Time.trim(); for(int i=as400Time.length();i<6;i++) as400DateTimeBuffer.append("0"); if(as400Time.length()>6) as400DateTimeBuffer.append(as400Time.substring(0,6)); else as400DateTimeBuffer.append(as400Time); } as400DateTime = as400DateTimeBuffer.toString(); } } if(as400DateTime==null || as400DateTime.trim().equals("0") || as400DateTime.trim().length()==0) { if(canReturnNull!=null && canReturnNull.equalsIgnoreCase("false")) throw new ServiceException("Input date of convertAS400Date2JavaDateTime is empty"); } else { as400DateTime = as400DateTime.trim(); try { javaDate = as400DateTimeFormat.parse(as400DateTime); } catch(Exception e) { throw new ServiceException(e); } } return javaDate; }
as400DateTime = null
as400Date = "20060522"
as400Time = "85836"
canReturnNull = "True"
Voici l'exception qui est jetée:
La ligne 118 qui jette l'exception est la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 com.wm.app.b2b.server.ServiceException : java.lang.NumberFormatException : For input string: "" at givUtils.as400.dates.convertAS400DateTime2JavaDateTime (dates.java:118) at sun.reflect.GeneratedMethodAccessor216.invoke (Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke (Method.java:324) at com.wm.app.b2b.server.JavaService.baseInvoke (JavaService.java:287) at com.wm.app.b2b.server.invoke.InvokeManager.process (InvokeManager.java:587) at com.wm.app.b2b.server.invoke.StatisticsProcessor.process (StatisticsProcessor.java:44)
A noter que ce programme tourne depuis la nuit des temps sur AIX avec la JVM IBM 1.4.2 build ca142-20050929a et qu'il n'a jamais eu ce problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 javaDate = as400DateTimeFormat.parse(as400DateTime);
Quelqu'un a t'il une explication à ce problème ?
Merci à tous.
Partager