2008-10-23 6 views
6

Ich schreibe gerade einen Server, der mehrere Module hostet. Der Server führt jedes Modul in einer separaten Anwendungsdomäne aus. Was ich erreichen möchte, ist die Ausnahme-Isolation, d. H. Wenn ein Modul eine Ausnahme auslöst, möchte ich nicht, dass der gesamte Prozess beendet wird, sondern nur diese spezifische Anwendungsdomäne. Ich weiß, dass ich CLR sagen kann, auf altes Verhalten zurückzugreifen (.NET 1.0), wenn alle nicht abgefangenen Ausnahmen in verschiedenen Threads verschluckt wurden. Dies ist jedoch nicht die "eleganteste" Lösung.Umgang mit nicht abgefangenen Ausnahmen in der C# -Konsolenanwendung

Antwort

7

Wie wäre es zu diesem Ereignis abonnieren:

AppDomain.CurrentDomain.UnhandledException 

Sie finden die ExceptionObject Eigenschaft von Typ Object Exception werfen müssen.

Hoffe, dass hilft.

+0

Leider ist dies nicht Ausnahmebehandler, stattdessen werden Sie nur über unbehandelte Ausnahme benachrichtigt. Alles in allem wird die Anwendung noch abstürzen :( – paszczi

+0

, wenn eine nicht behandelte Ausnahme passiert, technisch ist die Anwendung bereits abgestürzt. Dies ermöglicht es Ihnen, eine Aktion zu machen und die Anwendung zu debuggen oder den Benutzer zu benachrichtigen. –