Exceptionhandlingunterschied Debug / Release

13/02/2009 - 12:05 von Markus Springweiler | Report spam
Hallo,

nachfolgende Beobachtung làsst sich nicht beeinflussen durch:
* "define DEBUG const"
* optimize code
* VS-Debugger oder Stand-alone

Anwendungstyp: WPF-Anwendung mit DispatcherUnhandledException-Handler (in
app.xaml + app.xaml.cs), welcher die Innerexceptions als Treeview
visualisiert.

Das Problem folgender Zweizeiler, ein einfacher Aufruf einer WCF-Methode:
using ( var svc = new DummyServiceClient() )
data = svc.GetData("input");

Wenn nun der WCF-Dienst nicht làuft, bzw. der ganze Rechner nicht
erreichbar ist, erhalte ich
im Release-Modus (schön):
+ System.ServiceModel.EndpointNotFoundException
+ System.Net.WebException
+ System.Net.Sockets.SocketException
im Debug-Modus dagegen nur:
+ System.ServiceModel.CommunicationObjectFaultedException ("Das Kommunikationsobjekt "System.ServiceModel.Channels.ServiceChannel" kann nicht zur Kommunikation verwendet werden, weil es sich im Faulted-Status befindet.")

Mit angehàngtem Debugger im Debug-Modus kann man erkennen, daß in derselben
Code-Zeile (GetData) zwei Exceptions nacheinander geworfen werden, erst die
gute und dann die zweite, welche die erste komplett überschreibt.
Die zweite wird definitiv im Dispose (durch using) ausgelöst, da ohne
"using" die zweite Exception ausbleibt.

Ich sehe allerdings im Reflector keinen Hinweis darauf, warum sich der Code
so unterschiedlich verhàlt. Vorallem was unterscheidet sich noch zwischen
DEBUG und RELEASE ausser dem fehlenden "define DEBUG const" und dem
aktivierten "optimize code" im RELEASE?

/\/\arkus.
 

Lesen sie die antworten

#1 Markus Springweiler
13/02/2009 - 12:40 | Warnen spam
Nachtrag,

nachfolgende Beobachtung làsst sich nicht beeinflussen durch:
* "define DEBUG const"
* optimize code
* VS-Debugger oder Stand-alone



Sie làsst dich dafür durch die app.config beeinflussen, denn der RELEASE
build zeigt nicht auf den intern über WSHttpBinding gehosteten
Debug-Service sondern bereits auf einen halb-externen IIS-Testserver,
allerdings über BasicHttpBinding.

Jetzt kann man vermutlich darüber streiten, eine Exception im Dispose
überhaupt auftreten sollte, und sich WSHttpBinding da quasi fehlerhaft
verhàlt?

/\/\arkus.

Ähnliche fragen