![]() |
Effektives Errorhandling in DLL's
Hi @all,
da ich zurzeit an DLL's arbeite und sich mir immer wieder die Frage stellt, wie mache ich das mit den Errors, hab ich mir gedacht, fragste doch mal die Freaks von der DelphiPraxis. :wink: Grundsetzlich geht es mir darum, möglichst einfach den Nutzer von dem Fehlschlagen der Funktion zu informieren, allerdings wünsche ich mir auch klare Funktionen bzw. Prozeduren, die nur Dinge zurückgeben, die gebraucht werden, bzw. nichts zurück geben, wenn man nichts direkt zurückgeben kann. Beispiel: eine Is*-Funktion sollte immer einen Boolean zurückgeben, nicht etwa ein HResult, zusätzlich aber noch einen Pointer auf eine Variable verlangen, in die dann das eigendliche Ergebnis kommt. Da kommt einem dann direkt der Gedanke: "Mach ich das Ding halt einfach mit Exceptions". Problem ist, afaik, dass Exceptions von Sprache zu Sprache anders sind und somit kann man leider keine Exception mit Hilfe von try..except-Blöcken abfangen, sofern sie aus einer DLL heraus geworfen wurden. Dann bekamm ich noch die Idee, einfach einen Exceptionhandler für die DLL zu programmieren, der den Fehler ausgibt und dann mitels ExitProcess, der ganzen Sache ein unsauberes Ende verleit. Das geht natürlich auch nicht, da, wenn eine Funktion fehlschlägt, dass nicht direkt in einer Katastrophe von AV's und sonstigen Hilfeschreien enden muss. Gibt es noch etwas, was wirklich gut ist? MfG Desmu |
Re: Effektives Errorhandling in DLL's
Weiß keine einen Rathschlag? =(
|
Re: Effektives Errorhandling in DLL's
Wenn du mit DLLs programmierst, dann bleibt nur die Möglichkeit Errorcodes zurückzugeben.
"Old School" Programmierung halt. Alle Annehmlichkeiten wie Klassen, Objekte und Exceptions (das sind ja auch Klassen) können die Grenze zwischen der DLL und der Anwendung nicht überspringen. Es gibt besondere DLLs nämlich Delphi-Packages und ActiveX-DLLs mit denen man wieder Objektorientiert arbeiten kann. |
Re: Effektives Errorhandling in DLL's
Mach es mit HResult. In Delphi gibt es dafür mit der Safecall-Aufrufkonvention spezielle Unterstützung, sodass du absolut nichts mehr tun musst, aus .NET geht es ähnlich (aus VB vermutlich auch, aber wer verwendet VB). Alle anderen Sprachen müssen es manuell machen, aber die haben dann eben Pech gehabt.
|
Re: Effektives Errorhandling in DLL's
Zitat:
Kommentar hättest sparen können Oder? ICH.. ICH.. |
Re: Effektives Errorhandling in DLL's
Zitat:
Zitat:
Zitat:
Falls ja: ![]() (Es wäre noch anzumerken, daß es natürlich nicht um VB.NET geht; wenn man dessen Benutzern Glauben schenken darf, soll daraus ja eine brauchbare Programmiersprache geworden sein.) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz