AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikationsfehler nach aussen melden

Ein Thema von DelphiManiac · begonnen am 4. Mär 2009 · letzter Beitrag vom 4. Mär 2009
Antwort Antwort
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#1

Kommunikationsfehler nach aussen melden

  Alt 4. Mär 2009, 10:24
Hallo,

ich habe mal eine Frage, wie würdet ihr folgendes lösen:

Es gibt ein Geraeteklasse welche Methoden hat um Daten aus dem Gerät zu lesen.

Also bspw:

einGeraet.Get_Seriennummer(SN); Es kann jedoch sein, das das Gerät nicht Antwortet oder falsch Antwortet etc...

Bisher habe ich es so gemacht, dass jede Kommunikationsmethode eine ID zurückgibt (sozusagen den Fehlercode).
Das ist jedoch sehr umständlich.

Könnte mann es nicht vielleicht über Exceptions lösen, dass man dann die Exception wirft, wenn ein Fehler auftritt und dann eine Meldung ausgibt, die Schnittstelle schließt, oder sonst was macht???

Ich habe Exception bisher selten eingesetzt, wollte nur mal hören, ob dieser Ansatz Sinn macht, oder ob ihr vielleicht einen besseren habt.

Vielen Dank

MfG
DM
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Kommunikationsfehler nach aussen melden

  Alt 4. Mär 2009, 13:32
Zitat von DelphiManiac:

Ich habe Exception bisher selten eingesetzt, wollte nur mal hören, ob dieser Ansatz Sinn macht, oder ob ihr vielleicht einen besseren habt.
Klar, das ist einer der besten Anwendungsfälle für Exceptions. Fehlercodes zurückzugeben hilft nicht, da man diese ja als Aufrufer auch ignorieren kann (oder übersehen, es muss ja nicht absichtlich sein).
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#3

Re: Kommunikationsfehler nach aussen melden

  Alt 4. Mär 2009, 13:39
Hi,

ja das passiert mir oft, dass ich eben keine Überprüfung mache auf den Rückgabewert.

Wie könnte denn so ein Exception Wurf aussehen, könntest du mir da ein paar Zeilen Code geben?
Danke
Gruß
DM
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Kommunikationsfehler nach aussen melden

  Alt 4. Mär 2009, 13:50
Zitat von DelphiManiac:
Hi,

ja das passiert mir oft, dass ich eben keine Überprüfung mache auf den Rückgabewert.

Wie könnte denn so ein Exception Wurf aussehen, könntest du mir da ein paar Zeilen Code geben?
Danke
Gruß
DM
ganz einfach:

raise Exception.Create('Das Gerät antwortet nicht'); oder mit einer selbstdefinierten Exception Klasse:

raise EDeviceNotAvailable.Create; oder noch mit einem Fehlercode, der die Fehlermeldung weiter spezifiziert

Delphi-Quellcode:
if Is4711Error then
  raise EDeviceNotAvailable.Create(4711);
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#5

Re: Kommunikationsfehler nach aussen melden

  Alt 4. Mär 2009, 14:13
Super, danke dir.

Nochmal ne Frage zur Exceptionklasse, was kann ich dann z.B.: mit dem im Konstruktor übergebenen Fehlercode machen.
Bzw. die Exceptionklasse kann / sollte welche Funktionalität implementieren?

Was wäre da sinnvoll?!

Gruß
DM
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Kommunikationsfehler nach aussen melden

  Alt 4. Mär 2009, 16:25
Die Exceptionklasse sollte

=> Einen aussagekräftigen namen haben. Also nicht EGeneralError
=> Felder für die Werte, die dazu geführt haben könnten.

Ein Beispiel:

ECommunicationTimeout
Felder z.B.
Timeout (Wie lange wurde gewartet?)
Address/Object (Worauf wurde gewartet?)
LastCmd (Was war der letzte Befehl, der gesendet wurde (evtentuelle Fehlerursache))

Methode z.B. .ToString() (um die ganzen Felder bequem zu verpacken, z.B. erweiterte Anzeige oder Logdatei)

seperate Klassen sind den Fehlercodes aber vorzuziehen, da man Exceptions nach Klasse filtern kann.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz