WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 28.11.2007, 15:30   #1
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard Fehlerbehandlungsroutine C#

Hab ein Programm (dll), dessen Routinen sowohl in Access als auch Perl (COM-Interop) verwendet werden. Bisher hab ich keine ordentliche Fehlerbehandlung eingebaut, möchte dies aber nun tun. Wie geh' ich da am Besten ran? Ich kann ja schwer jeden möglichen Fehler in einem try-catch-Block abfangen. Geht das überhaupt, dass ich in Perl eine Fehlermeldung zurückbekomme, falls was schiefläuft?

Einen Tritt in die richtige Richtung könnt ich jetzt gut gebrauchen
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 28.11.2007, 15:34   #2
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Ist mir grad eingefallen. Es wär doch eine Möglichkeit, ein Flag einzubauen, das abgefragt wird und wenn pos. dann einfach alle Vorgänge protokolliert. Einfach ein Logfile erstellen.

Ist glaub ich ganz gut. Oder spricht da was dagegen?
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 28.11.2007, 23:09   #3
Biri
Hero
 
Registriert seit: 04.09.2001
Beiträge: 894


Standard

hi,

hmmm - es geht also darum, eine Exception einer .net Klasse als COM Fehlercode bereitzustellen, oder?
COM liefert ein sog. hResult, welches einen Fehlercode enthalten kann - ich denke, man könnte je nach Exception ein anderes HResult retour geben, hab mit Interop aber noch nicht wirklich viel gemacht und wenn, dann in die andere Richtung, also COM Komponenten in .net verwendet.

fg
hannes
Biri ist offline   Mit Zitat antworten
Alt 29.11.2007, 10:24   #4
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Hi, du kannst in COM einfach per on error goto ... die Exceptions die deine .NET DLL schießt abfangen.

Die err.Message ist dann das gleiche was auch in der Exception.Message drin steht.
Nur die err.Number ist nicht brauchbar (od. zumindest habe ich noch nicht raus gefunden, wie ich die setze)

Nur wenn du schon in .NET keine Unterscheidung machen möchtest, wie soll das dann in altem "Com-Code" besser gehen? Weil irgendwo musst die fehler ja differenzieren, sofern das erforderlich ist?!
renew ist offline   Mit Zitat antworten
Alt 29.11.2007, 12:39   #5
Hussl
Veteran
 
Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320


Standard

Danke für eure Antworten.

Im Grunde will ich nur die Fehlermeldungen im ext. Programm haben, die ein finden desselbigen etwas erleichtern. In Perl werden zur Zeit gar keine Fehler ausgegeben (oder der Kollege fängt die nicht ab, das weiß ich jetzt nicht) Fehler sind z.B. eine benötigte Datei fehlt, Parameter sind falsch, falsche Pfadangaben, etc.

Hab mir aber eh schon gedacht, ob ich in der DLL einfach gar keine Fehlerbehandlung bzw. nur die Fehler behandle, die in der DLL sinnvoll erscheinen und den Rest dem externen Programm (in dem Fall Access u. Perl) überlasse. Zusätzlich noch optional ein Logfile in dem alle Aktionen der DLL mitprotokolliert werden. Das sollte doch reichen.

Hab mir nur gedacht, dass es zu solchen fällen schon hochwissenschaftliche Lösungsansätze gibt, die ich übernehmen sollte. Anscheinend ist dem nicht so
____________________________________
Nein, ich bin nicht die Signatur, ich putz hier nur.

http://www.chili-it.at
Hussl ist offline   Mit Zitat antworten
Alt 29.11.2007, 15:20   #6
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Zitat:
Original geschrieben von Hussl

Hab mir nur gedacht, dass es zu solchen fällen schon hochwissenschaftliche Lösungsansätze gibt, die ich übernehmen sollte. Anscheinend ist dem nicht so
nein, leider nicht. Ich bastel derzeit ja auch an .NET - Com Interop und hab da auch noch nicht so die best practices gefunden
renew ist offline   Mit Zitat antworten
Alt 29.11.2007, 16:51   #7
renew
Inventar
 
Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552


Standard

Vielleicht noch als Anregung:

Ich mache das Exception-Handling jetzt komplett in .NET.

Meine DLL-Methode liefert einen Integer als Rückgabewert (damit der Programmierer, der das weiter verwendet weiß was los is) und bekommst noch über einen String (byRef Parameter der Funktion) die Fehlermeldung zurück (entweder eine Fehlermeldung von mir od. die ex.Message)

lg, renew
renew ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:19 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag