![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320
|
![]() 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 |
![]() |
![]() |
![]() |
#2 |
Veteran
![]() Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320
|
![]() 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 |
![]() |
![]() |
![]() |
#3 |
Hero
![]() Registriert seit: 04.09.2001
Beiträge: 894
|
![]() 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 |
![]() |
![]() |
![]() |
#4 |
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
![]() 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?! |
![]() |
![]() |
![]() |
#5 |
Veteran
![]() Registriert seit: 08.02.2001
Alter: 41
Beiträge: 320
|
![]() 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 |
![]() |
![]() |
![]() |
#6 | |
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
![]() Zitat:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Inventar
![]() Registriert seit: 22.10.2000
Alter: 41
Beiträge: 5.552
|
![]() 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 |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|