17. oktober 2007 - 21:39
Der er
35 kommentarer og 1 løsning
WSDL og exceptions
Hejsa, Er der en standard for hvilke exceptions en wsdl kan smide?
Annonceindlæg tema
17. oktober 2007 - 22:25
#1
En WSDL ? Men du en web service defineret af en WSDL ?
18. oktober 2007 - 04:20
#2
ja præcis
18. oktober 2007 - 04:50
#3
Nej. Jeg mener derimod at det også her er best practice at bruge en custom exception.
18. oktober 2007 - 04:51
#4
19. oktober 2007 - 05:58
#5
det jeg mener er at jeg lige nu har en struktur som hedder try{ opret forbindelse til service } catch (Exception e){ out.print("et eller andet kiksede" +e) } Det jeg gerne vil er: try{ opret forbindelse til service } catch (Exception1 e1){ out.print("fejl1" +e1) } catch (Exception2 e2){ out.print("fejl2" +e2) } catch (Exception e3){ out.print("fejl3" +e3) } Så jeg kan skrive noget meningsfuldt ud på frontenden
19. oktober 2007 - 06:01
#6
jeg kan jo se at der for eksempel bliver smidt en UnknownHostException hvis der slet ikke kan oprettes en forbindelse. Mit spørgsmål gik så på om der er en række standard exceptions som altid bliver smidt når man arbejder med en wsdl
19. oktober 2007 - 10:35
#7
mit problem er at jeg ikke ved hvor jeg kan finde en komplet oversigt over alle exceptions. Jeg kan vel i princippet bare catche Exception og så lave noget if eller case på navnet
19. oktober 2007 - 10:36
#8
f.x if(e.equals("UnknownHostException")){ out.print("Hosten kunne ikke findes!"); }
20. oktober 2007 - 05:15
#9
OK - det er client side du tænker på. Du kan på stubben hvilke checked exceptions den smider. Du kan af gode grunde ikke se hvilke unchecked exceptions den smider. Men nogen er standardiserede i Java: javax.xml.rpc.JAXRPCException javax.xml.rpc.ServiceException javax.xml.rpc.soap.SOAPFaultException
22. oktober 2007 - 10:01
#10
Det jeg kan se på stubben der bliver smidt af exceptions er: org.apache.axis.AxisFault java.rmi.RemoteException org.apache.axis.NoEndPointException(); Jeg er bare ikke med på hvordan jeg får fanget dem i min JSP kode :-(
22. oktober 2007 - 15:18
#11
try catch men nok i en helper klasse fremfor i <% %>
23. oktober 2007 - 11:52
#12
Det jeg ikke fatter er at hvis jeg skriver catch(Exception e) så fanger jeg alle mulige exceptions ikke? Jeg vil gerne fange de enkelte muligheder så jeg kan skive noget forståeligt ud. Mit spørgsmål er altså: 1. Hvordan finder jeg ud af hvad exceptions hedder? 2. Hvordan skriver jeg koden?
23. oktober 2007 - 11:53
#13
er det her forkert try{ opret forbindelse til service } catch (Exception1 e1){ out.print("fejl1" +e1) } catch (Exception2 e2){ out.print("fejl2" +e2) } catch (Exception e3){ out.print("fejl3" +e3) }
23. oktober 2007 - 15:24
#14
Det er maaden at catche specifikke exceptions paa. Det opfattes normalt som varende daarligt skik at catche Exception.
23. oktober 2007 - 17:06
#15
Det er også derfor jeg gerne vil skeldne. Jeg kan bare ikke gennemskue hvordan jeg så gør det. Jeg kan jo for eks ikke gøre sådan her try{ opret forbindelse til service } catch (UnknownHostException e1){ out.print("fejl1" +e1) }
23. oktober 2007 - 17:07
#16
jeg skal bare vide hvad alle exceptions hedder. Eller rettere, jeg skal finde ud af hvordan jeg finder ud af hvad de hedder :-)
25. oktober 2007 - 09:58
#17
Hvad mener du i øvrigt med en hjælpeklasse?
26. oktober 2007 - 02:33
#18
Hvad er der galt med 23/10-2007 17:06:20 ?
26. oktober 2007 - 02:34
#19
Du kan se checked exceptions. Unchecked exceptions kan du ikke finde alle mulige af.
26. oktober 2007 - 02:35
#20
Med en hjælpe klasse mener jeg at din JSP side kalder en lille ren Java klasse som laver kaldet, catcher evt. exceptions og håndterer dem.
26. oktober 2007 - 13:00
#21
Hvis jeg nu holder mig til catch (Exception e){ if(e.equals("java.net.SocketTimeoutException: connect timed out")){ fejlbesked="fejl1!"; } else if(e.equals("java.net.NoRouteToHostException: No route to host: connect")){ fejlbesked="fejl2!"; } }
26. oktober 2007 - 13:02
#22
Det virker ikke :-(
26. oktober 2007 - 15:18
#23
e.equals -> e.getMessage().equals viker muligvis, men det er ikke den rigtige maade at goere det paa ! try { ... } catch(SocketTimeoutException e) { ... } catch(NoRouteToHostException e) { ... } er meget bedre !
26. oktober 2007 - 23:38
#24
Det er også måden jeg helst vil lave det på. Lige nu jag jeg lavet det således String fejl=""; try { ... } catch(Exception e) { fejl=e.toString(); if(fejl.equals("java.net.SocketTimeoutException: connect timed out")){ fejlbesked="fejl1!"; } else if(fejl.equals("java.net.NoRouteToHostException: No route to host: connect")){ fejlbesked="fejl2!"; } } Det virker sådan set, men jeg kan godt se det er noget hejs
29. oktober 2007 - 09:01
#25
Jeg kan ikke få det til at virke sådan. cannot resolve symbol symbol : class SocketTimeoutException catch(SocketTimeoutException e) {
29. oktober 2007 - 13:53
#26
Jeg må være dummere end andre folks børn. Jeg prøver at gøre således try { OPRET FORBINDELSE TIL WEBSERVICE } catch(SocketTimeoutException e) { FEJLBESKED } catch(NoRouteToHostException e) { FEJLBESKED } Det er åbenbart forkert
29. oktober 2007 - 14:28
#27
Du mangler ikke bare en: import java.net.*; i toppen ?
29. oktober 2007 - 15:00
#28
exception java.net.SocketTimeoutException is never thrown in body of corresponding try statement catch(SocketTimeoutException e) {
29. oktober 2007 - 15:08
#29
det er tydeligvis noget jeg SLET ikke fatter
29. oktober 2007 - 15:09
#30
Den fejl meddelelse er vel klar nok. Der smides aldrig en en SocketTimeoutException. Catcher stub koden den selv ?
29. oktober 2007 - 15:26
#31
Jeg er slet ikke sikker på jeg forstår det. Det her er hvad jeg umiddelbart kunne finde i koden. try { return ((java.lang.Boolean) _resp).booleanValue(); } catch (java.lang.Exception _exception) { return ((java.lang.Boolean) org.apache.axis.utils.JavaUtils.convert(_resp, boolean.class)).booleanValue(); }
30. oktober 2007 - 03:10
#32
Det gør den jo så.
31. oktober 2007 - 10:42
#33
Det jeg ikke fatter er at jeg kan gøre sådan her catch (Exception e){ fejlbesked=e.toString(); if(fejlbesked.equals("java.net.SocketTimeoutException: connect timed out")){ fejlbesked="kbjbjhk"; } else if (fejlbesked.equals("java.net.NoRouteToHostException: No route to host: connect")){ fejlbesked="njfsnvkjf"; } else if (fejlbesked.equals("java.net.SocketTimeoutException: Read timed out")){ fejlbesked="mnnvkj"; }
31. oktober 2007 - 10:47
#34
men ikke } catch(SocketTimeoutException e) { FEJLBESKED } catch(NoRouteToHostException e) { FEJLBESKED }
12. november 2007 - 05:11
#35
Prøv lige og udskriv e.getClass().getName() - jeg gætter på at den catcher alle exceptions og wrapper dem i en egen exception.
08. juli 2010 - 16:26
#36
lukker og slukker
Kurser inden for grundlæggende programmering