Error-Handling
-
Ist es möglich jeden Fehler im Programm abzufangen damit nicht das Programm angehalten wird usw.
Bei PHP ginge das indem man einfach ein @ vor den Befehl setzt, aber wie mache ich das im Borland C++-Builder 6?
-
schau mal nach try und catch in der hilfe
-
Hi!
Und kann man irgendwie das StandardDialog, das bei Fehlern angezeigt wird durch einen anderen ersetzten?
-
Siehe FAQ unter "Drucker", da gibt's ein beispiel zum Exceptionhandling.
-
bIce schrieb:
Und kann man irgendwie das StandardDialog, das bei Fehlern angezeigt wird durch einen anderen ersetzten?
Hi,
mit try und catch! Wenn's nicht geht, Prog mal außerhald der IDE starten!MFG
Alexander Sulfrian
-
Und wie ist es mit Fehlern, die vorher nicht eingeplant waren?
Die kommen dann bei dem "Haupt" try-catch in der Projekt-Unit an, aber wie kann ich da ein anderes Dialog anzeigen als das Standardmäßige?so funktioniert es nicht:
... catch (Exception &exception) { Form2->ShowModal(); //Application->ShowException(&exception); } ...
-
hi,
bin mir nicht sicher was du mit standardmässigen dialogen meinst.
kann aber sein, dass du das gewünschte verhalten (also deine eigenen meldungen) "siehst", wenn du unter den debuggeroptionen abschaltest, das er bei sprachexceptions stoppen soll.
-
versuch mal das hier NICHT von der IDE aus auszuführen, dann weisst Du was ich meine:
int *i; *i = 20;
-
ähm und ?
dann schreib ich dasint *i; try { *i = 20; } catch(Exception &e) { ShowMessage("huhu fehleri"); }
und krieg ne prima MessageBox
-
also, ich würde da
int *i = new int; *i = 20;
schreiben, aber damit wollte ich nur demonstrieren welchen Dialog ich meine.
Im allgemeinem ist aber so, dass (fast) alle Programme irgendwelche Bugs haben, für die man kein Exceptionhandling vorgesehen hat, weil der Programmierer nicht wusste, dass es sie gibt. Und deswegen wollte einen Dialog schreiben, in dem dann der Benutzer einen Fehler-Bericht an mich schicken kann.Ich hoffe, dass ich mich diesmal verständlich genug ausgedrückt habe.
-
Ooooja bugs gibts immer
was du machen kannst ist vielleicht sowasApplication->OnException = unhandeldExceptions;
void __fastcall TmainWin::unhandeldExceptions(TObject *Sender, Exception *E) {
..... anzeigen, loggen, was auch immer}
-
Danke, es funktioniert!!! Endlich!!!
Edit: int i=20; ist noch besser.
-
catch (...)
Klappt auch ganz gut!
MFG
Alexander Sulfrian
-
War genau alles das was ich wissen wollte!!! THX