exceptions Beschreibungen
-
Da ich in meinem Programm auch eventuelle Fehler abfangen möchte komme ich ja nicht um Try Catch usw herum.
Obwohl das ja auch ganz gut ist.Aber wo kann man den rausfinden was für exceptions es gibt ??
Beispiel: Ich progge in meinem Programm das er zb. mit der Indyftp komponente eine Datei von einem Server downloadet. Ok soweit.
Nun kann das aber Fehler geben (keine Internetverbindung, Datei nicht vorhanden, Firewall an usw.)
Wie bekomme ich zb. raus wie da die exceptions heissen die es da gibt.
Bisher hab ich die Namen durch probieren rausbekommen. gehe zb. Offline probiere dann zu downloaden - prog stürzt ab - und die exceptions steht da EIdSocketErrorHab auch schon in der Hilfe gesucht. aber nicht wirklich was gefunden. Da steht immer nur wie man try catch usw benutzt.
Ich möchte ja auch eine Spezifische Fehlermeldung ausgeben womit der User was anfangen kann und nicht ein. Es ist irgendein Fehler aufgetreten. Das sind die meisten ja schon von Windows gewohntIch kann ja nicht immer alles im Kopf haben was der User falsch machen kann. und dann alle Fehler einmal ausprobieren.
Wäre schön wenns da irgendwo ne Liste gibt mit name der exc..... tritt auf wenn durch null dividiert wird usw.blue230
-
Gewöhnlich ist die Fehlermeldung, die die VCL nach einer Exception generiert, doch hinreichend aussagekräftig. Meldungen wie "Es trat ein Fehler auf" sind mir eigentlich noch nie begegnet.
Es sollte eigentlich, soweit überhaupt, nur punktuell notwendig sein, Exception-Marshaling zu betreiben. Wenn dir eine spezielle Exception auffällt, deren Meldung du nicht aussagekräftig genug findest und die in deinem Programm auftritt, dann und nur dann behandle sie gesondert (am besten in TApplicationEvents::OnException).
-
Ich glaube du hast mich da missverstanden.
Ich selbst kann mit der Exception was anfangen und bekomme auch meist schnell raus was den Fehler verursacht hat.
Ich muss ja aber mit der Unwissenheit der Nutzer rechnen die mein Programm benutzen und ich möchte denen dann nicht einfach sagen "Es trat ein unbekannter Fehler auf" sondern ich will denen sagen können "Du wolltest was runterladen du musst aber zuvor Online gehen. oder deine Firewall blockt. usw.
und um das zu realisieren ist es bei bestimmten situationen notwendig auf die exception Behandlung zuzugreifen.
Ich weis aber vorher nicht was es da alles für Exceptions geben könnte.Ich müsste ja rein Theoretisch erst den Fehler selbst erzeugen um im Programm zu sehen das geht nicht bzw um an den Namen der Exception zu kommen.
blue230
Es geht in meinem Programm nicht um hunderte exceptions sondern nur die wichtigsten die halt auftreten können durch verschiedene software bzw hardware oder auch fehlverhalten vom User.
zb das er vorm runterladen noch offline ist.Ich meine nicht Bedienfehler - Das schliesse ich ja beim Proggen schon aus. Ein Knopf wo er nicht draufklicken darf da kann er es auch nicht.
-
du kannst jederzeit in deinem Quellcode selbst Exceptions auslösen oder bei bestimmten Aktionien die Exceptions abfangen und andere Meldungen dafür ausgeben, hierbei sind z.B. "try-catch" und throw Exception()" sehr hilfreich
Beispiel beim Öffnen einer Datenbank:
try { ADOConnection->Open(); } catch (...) { ShowMessage("Die Datenbank konnten nicht geöffnet werden."); }
Beispiel zu Formularabfragen:
try { if (Edit1->Text.Trim() == "") throw Exception("Bitte geben Sie einen Feldwert ein."); } catch (Exception &E) { ShowMessage(E.Message); }
Da es verschiedene Fehlertypen (siehe BCB-Hilfe zu "VCL- und CLX-Exception-Klassen") gibt kann man z.B. für jeden separat einen catch-Block mit einer entsprechenden Behandlung machen
-
Jetzt kommen wir der sache etwas näher:
Da es verschiedene Fehlertypen (siehe BCB-Hilfe zu "VCL- und CLX-Exception-Klassen") gibt kann man z.B. für jeden separat einen catch-Block mit einer entsprechenden Behandlung machen
Wo stehen diese Fehlertypen ??
Das will ich wissen.
Den zb hab ich über indy in der Hilfe nix gefunden.Also wie man die abfängt weis ich. Ich muss ja aber erst die Namen wissen dieser exceptions um sie abfangen zu können.
Ich danke schonmal für die ganze mühe ......
blue230
-
Es ist schon klar was Du wissen willst, da Du aber immer noch nicht geschrieben hast welches Entwicklersystem Du verwendest, können wir Dir nicht helfen.
In modernen Systemen ist es üblich, bei der Dokumentation von Klassenmethoden jeweils die Exceptions aufzulisten, die die jeweilige Methode werfen kann. Im BCB 6 war das meines Wissens nicht üblich, wie das auf aktuellen Versionen aussieht weiß ich nicht.
-
benutze BDS2007
Ich finde dort leider nichts in der Hilfe ... was aber nicht heisst das es da nicht steht ich finde es vieleicht nur nicht.
robert
-
Hallo Gemeinschaft,
ich bin gerade über die Suchfunktion hier in diesem Thread gelandet und will mal der Vollständigkeit halber noch etwas dazu schreiben. Welche exceptions geworfen werden können, steht bei mir im BDS2006 beispielsweise in der Hilfe bei den entsprechenden Funktionen:
BDS2006-Hilfe schrieb:
Klasse
AnsiStringSyntax
[C++] double ToDouble ();
Beschreibung
ToDouble konvertiert einen String in einen Gleitkommawert. Der String muss ein optionales Vorzeichen (+ oder –), einen String mit den Ziffern und einem optionalen Dezimalzeichen und ein optionales 'E' bzw. 'e' mit einem nachfolgendem vorzeichenbehafteten Integerwert enthalten. Leerzeichen am Anfang und Ende werden ignoriert. Die globale Variable DecimalSeparator definiert das Zeichen, das als Dezimaltrennzeichen verwendet werden muss. Tausendertrennzeichen und Währungssymbole sind nicht zulässig. Enthält der String keinen gültigen Wert, wird eine EConvertError-Exception ausgelöst.MfG