Fehlercode aus COM an Client übermitteln

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von HolgerNils.

    Fehlercode aus COM an Client übermitteln

    Hallo in die Runde,
    ich möchte in einer Klassenbibliothek aufrufbare Funktionen zur Verfügung stellen und das funzt auch schon ;-), soweit so gut. Was mir momentan ein wenig Probleme macht ist, wie ich Fehler (Code/Description) möglichst elegant an den aufrufenden Client zurückgeben kann. Mit Raise funzt das zwar grundsätzlich, aber die Fehlerbehandlung wied bereits in der Komponente erwartet und angemeckert. Ignorier ich das im Debug-Mode, dann steht brave in Err.Number etc. alles drin, wenn das Programm in den Client zurückkehrt.Ist das der richtige Weg zur Zurückleitung von Fehlern und ich muss noch was beachten, um die lokale Behandlung zu unterdrücken? Oder wie macht man es am besten?
    Ziel wäre, daß der Client die Funktion aufruft und dann in Err.Number/Err.Desription z. B. den Fehler zurück kriegt und auch den Event, daß einer aufgetreten ist.

    Danke für Eure Tipps!
    HNils
    Ich nehme mal an, dass dein Client verwaltet ist und einen COM-Server über einen RCW aufruft. Jeder COM-Aufruf gibt ein HRESULT zurück, welches vom RCW ausgewertet wird. Ist der Rückgabewert ungleich S_OK, wird eine COMException geworfen, die in einem Try/Catch-Block abgefangen werden kann. So viel zum Standardverfahren. Falls du irgendwann doch mal ein HRESULT direkt erhalten solltest, kannst du Marshal.GetExceptionFromHResult() verwenden. Ob du die Fehler direkt nach dem Aufruf (in Catch) behandelst oder dort erst ein Ereignis feuerst, bleibt dir überlassen. Das Problem beim Ereignis ist, dass darauf nicht zwangsläufig reagiert werden muss, sodass eventuell Fehler unentdeckt / unbehandelt bleiben und so weitere Fehler provozieren. Ohne Ereignis musst du den Fehler zwingend behandeln --> daraus dürften dann keine weiteren Probleme entstehen.
    Gruß
    hal2000

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ () aus folgendem Grund: Rechtschreibfehler...