Exceptions und wie kriege ich die mit
Exceptions kennzeichnen unerwartete Zustände eines Programms. Als Programmierer kann man aber nicht alle Exceptions vorhersehen. Daes auch aus Debuggingsicht nicht sinnvoll ist, alle Exceptions in einen Try-Catch-Block zu stecken, kommen hin und wieder auch welche zum Benutzer.
Dies ist relativ unschön, vor allem, wenn die standard Windows-Fehlermeldung erscheint. Da macht es einen viel besseren Eindruck, wenn das Programm direkt anbietet, dem Entwickler den Fehler mitzuteilen.
Dies ist die standard Fehlermeldung unter Windows 7. Unter Windows Vista sieht sie ähnlich aus, unter Windows XP bietet sie allerdings mehr Möglichkeiten.
Wenn das .Net-Framework eine Exception bemerkt, die nicht von der Anwendung abgefangen wird, schließt es das Programm und übermittelt den Fehler. Microsoft sammelt diese Informationen, auf einem speziellen Server. Dies ist eigentlich auch sinnvoll, nur wenn man dann an diese Daten herankommen möchte, muß man seine Programm e mit einem VeriSign-Zertifikat signieren. Da das relativ teuer ist und man vielleicht einen etwas direkteten Zugriff auf die Daten haben möchte, kann man einen solchen Fehler auch selbst abfangen.
Mit einer von mir gebastelten Library ist das ein Zweizeiler. Das einzige, was man noch tun muß, ist die Konfigurationsdatei eines WCF-Services und die Konfigurationsdatei des Clients bearbeiten. Dafür gibt es hier eine Anleitung. Wem es lieber ist, die XML-Dateien selbst zu bearbeiten kann das auch gerne tun.
Um die von mir gebaute Library einzubinden braucht es nur eine Zeile Code in der Main Funktion des Programms.
ReportException.ExceptionReporter er =
new ReportException.ExceptionReporter();
Wenn das Programm danach Opfer einer Unbehandelten Exception wird wird der Benutzer gefragt, ob er den Fehler übermitteln will.
Bei mir läuft ein WCF-Servidce auf einem IIS. Zu diesem Service baut das gerade noch lebende Programm eine Verbindung auf, übermittelt die wichtigsten Daten und wird beendet.
Die übermittelten Daten werden auch hier in einer Datenbank abgespeichert.
Wer Interesse hat, kann sich die Library hier runterladen.
