Avatar billede mik28 Seniormester
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?
Avatar billede arne_v Ekspert
17. oktober 2007 - 22:25 #1
En WSDL ?

Men du en web service defineret af en WSDL ?
Avatar billede mik28 Seniormester
18. oktober 2007 - 04:20 #2
ja præcis
Avatar billede arne_v Ekspert
18. oktober 2007 - 04:50 #3
Nej.

Jeg mener derimod at det også her er best practice at bruge en custom exception.
Avatar billede mik28 Seniormester
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
Avatar billede mik28 Seniormester
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
Avatar billede mik28 Seniormester
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
Avatar billede mik28 Seniormester
19. oktober 2007 - 10:36 #8
f.x

if(e.equals("UnknownHostException")){
out.print("Hosten kunne ikke findes!");
}
Avatar billede arne_v Ekspert
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
Avatar billede mik28 Seniormester
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 :-(
Avatar billede arne_v Ekspert
22. oktober 2007 - 15:18 #11
try catch

men nok i en helper klasse fremfor i <% %>
Avatar billede mik28 Seniormester
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?
Avatar billede mik28 Seniormester
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)
}
Avatar billede arne_v Ekspert
23. oktober 2007 - 15:24 #14
Det er maaden at catche specifikke exceptions paa.

Det opfattes normalt som varende daarligt skik at catche Exception.
Avatar billede mik28 Seniormester
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)
}
Avatar billede mik28 Seniormester
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 :-)
Avatar billede mik28 Seniormester
25. oktober 2007 - 09:58 #17
Hvad mener du i øvrigt med en hjælpeklasse?
Avatar billede arne_v Ekspert
26. oktober 2007 - 02:33 #18
Hvad er der galt med 23/10-2007 17:06:20 ?
Avatar billede arne_v Ekspert
26. oktober 2007 - 02:34 #19
Du kan se checked exceptions.

Unchecked exceptions kan du ikke finde alle mulige af.
Avatar billede arne_v Ekspert
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.
Avatar billede mik28 Seniormester
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!";
    }
}
Avatar billede mik28 Seniormester
26. oktober 2007 - 13:02 #22
Det virker ikke :-(
Avatar billede arne_v Ekspert
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 !
Avatar billede mik28 Seniormester
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
Avatar billede mik28 Seniormester
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) {
Avatar billede mik28 Seniormester
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
Avatar billede arne_v Ekspert
29. oktober 2007 - 14:28 #27
Du mangler ikke bare en:

import java.net.*;

i toppen ?
Avatar billede mik28 Seniormester
29. oktober 2007 - 15:00 #28
exception java.net.SocketTimeoutException is never thrown in body of corresponding try statement
      catch(SocketTimeoutException e) {
Avatar billede mik28 Seniormester
29. oktober 2007 - 15:08 #29
det er tydeligvis noget jeg SLET ikke fatter
Avatar billede arne_v Ekspert
29. oktober 2007 - 15:09 #30
Den fejl meddelelse er vel klar nok. Der smides aldrig en en SocketTimeoutException.

Catcher stub koden den selv ?
Avatar billede mik28 Seniormester
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();
            }
Avatar billede arne_v Ekspert
30. oktober 2007 - 03:10 #32
Det gør den jo så.
Avatar billede mik28 Seniormester
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";
        }
Avatar billede mik28 Seniormester
31. oktober 2007 - 10:47 #34
men ikke


} catch(SocketTimeoutException e) {
FEJLBESKED
} catch(NoRouteToHostException e) {
FEJLBESKED
}
Avatar billede arne_v Ekspert
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.
Avatar billede mik28 Seniormester
08. juli 2010 - 16:26 #36
lukker og slukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester