[Ruby-de-talk] Exception werfen (Controller und Webservice)

Tim Becker a2800276 at gmail.com
Fri Feb 23 07:29:21 EST 2007


>
> Im Controller wird eine Methode abgearbeite in der eine Exception auftreten
> kann.
>
> def methode
>      begin
>              .
>              .
>      rescue => 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ückgabestring vom Webservice die
> Message von der Exception enthält. Was ich aber möchte ich das ich eine
> soapfault zurück 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 überhaupt in Ruby oder Ruby on Rails gibt. Ich weiß 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


More information about the Ruby-de-talk mailing list