Re: Exception werfen (Controller und Webservice)

"Tim Becker" <[email protected]> Fri, 23 Feb 2007 13:29:21 +0100
Newsgroups gmane.comp.lang.ruby.german
Message-ID <[email protected]>
>
> Im Controller wird eine Methode abgearbeite in der eine Exception auftret=
en
> kann.
>
> def methode
>      begin
>              .
>              .
>      rescue =3D> exc
>
>      end
> end
>
> In dem rescue soll jetzt das Exception handling passieren.
> Ich hab es mit Exception.new(exc) versucht.


Die Ruby Exception steckt schon in `exc` drin, Du brauchst die nicht
mehr zu wrappen. Anhand Deines Beispiels laesst sich aber leider nicht
erkennen, wo die Exception entsteht. Wenn kein Fault von dem
webservice geliefert wird, wird natuerlich auch in Ruby kein SOAP
fault entstehen.

Wenn Du in dem rescue Block Dir mal den Wert von `exc.class` ausgeben
laesst, solltest Du sehen, ob die Exception eine "SOAP::FaultError"
ist oder nicht. Ansonsten kannst Du Dir mit `exc.backtrace`  anzeigen
lassen, wo die Exception ueberhaupt entsteht.


> Das Ergebniss was ich bekommme ist das der R=FCckgabestring vom Webservic=
e die
> Message von der Exception enth=E4lt. Was ich aber m=F6chte ich das ich ei=
ne
> soapfault zur=FCck bekomme.

Was genau verstehst Du unter "soapfault"? Du moechtest an der Stelle
die reine XML Darstellung der SOAP Nachricht erhalten, oder eine Ruby
Exception, die SOAP Fehler abbildet? Ich vermute. dass es sich beim
dem "Rueckgabestring" tatsaechlich um ein `SOAP::FaultError` handelt,
aber wenn Du den einfach mit `puts` ausgibst, wird nur die
Fehlermeldung angezeigt. Wie gesagt, mit `exc.class` kannst Du
ermitteln, ob es sich tatsaechlich nur um einen String handelt.

>Hab leider auch noch nichts gefunden was mir sagt
> ob es einen soapfaul =FCberhaupt in Ruby oder Ruby on Rails gibt. Ich wei=
=DF nur
> das es bei Java geht.

http://www.ruby-doc.org/stdlib/libdoc/soap/rdoc/classes/SOAP/FaultError.html
http://www.ruby-doc.org/stdlib/libdoc/soap/rdoc/index.html

Die soap4r Doku ist furchtbar. Passt irgendwie zu SOAP an sich...

Gruss,
   -tim