Exceptions behandeln... Ich glaun ich bin zu plöd....
Erst mal folgender Code:
Delphi-Quellcode:
Was soll das machen fragt sich bestimmt jeder :)
...
procedure TForm1.TButton_ConnectClick(Sender: TObject); procedure Error(Error:EOleException); begin LException.Caption := 'EOleException'; //LHelpFile.Caption := Error.HelpFile; //LSource.Caption := Error.Source; //LErrorCode.Caption := Error.ErrorCode; //LHelpContext.Caption := Error.HelpContext; //LMessage.Caption := Error.Message; end; begin TButton_Connect.Enabled := False; TButton_Disconnect.Enabled := False; try SetConnectionString(TADOConnection_SQL); TADOConnection_SQL.Open; except on EOleException do ERROR(EOleException); TButton_Connect.Enabled := True; TButton_Disconnect.Enabled := False; end; end; ... Es gibt ja ab und zu lustige Exceptions (da der Anwender zu plöd ist, oder der Programmierer zu plöd war), welche mit ner WindowsTypischen MessageBox quittiert werden :) So ich bekomm das ja hin das keine Box erscheind, was ich ja net wirklich will ;) Wenn ich mir EOleException anschau, hat es Eigenschaften wie HelpFile, Source, ErrorCode, HelpContext und Message... Wie komm ich an derren Inhalt ran, wenn solch eine Exception ausgelöst wird? So wie ich es gemacht hab scheinbar net, da kommt immer [Fehler] MainUnit.pas(95): Inkompatible Typen: 'EOleException' und 'Class reference' Auch wenn ich die Eigenschaften im EceptBlock abfrag bekomm ich nur Fehler... Hat da wer nen Tip? Irgendwas wie ich an die Werte rannkomm? Dann wie sieht es mit meiner declarierten Procedure in der procedure aus? ist sowas verboten? funktionieren wird es wohl, meckert ja net rum ^^ MFG Keda |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
hi,
du musst dir eine variable definieren
Delphi-Quellcode:
Gruß
try
... except on e: EOleException do begin // hier kannst du jetzt was mit e machen.. end; end; Ken |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Zitat:
Aber ein Prob hab ich immer noch: Hier nochmal der Code mit dem E-Prinzip erweitert:
Delphi-Quellcode:
Warum geht:
procedure TForm1.TButton_ConnectClick(Sender: TObject);
procedure GetError(Error:EOleException); begin LException.Caption := 'EOleException'; LHelpFile.Caption := Error.HelpFile; LSource.Caption := Error.Source; //LErrorCode.Caption := Error.ErrorCode; LHelpContext.Caption := IntToStr(Error.HelpContext); LMessage.Caption := Error.Message; end; begin TButton_Connect.Enabled := False; TButton_Disconnect.Enabled := False; try SetConnectionString(TADOConnection_SQL); TADOConnection_SQL.Open; except on Error:EOleException do GetError(Error); {* on Error:EOleException do begin GetError(Error); end Else begin end; *} TButton_Connect.Enabled := True; TButton_Disconnect.Enabled := False; end; end;
Delphi-Quellcode:
Nicht?
on Error:EOleException do GetError(Error);
Warum muß es:
Delphi-Quellcode:
Sein damit es geht? Kapier ich nicht :wall:
on Error:EOleException do begin
GetError(Error); end Else begin end; MFG Keda |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Sobald du mit on anfängst, sagst du Delphi, dass du mehrere Exceptions behandeln willst. Tust du dies nicht, führt Delphi den Code aus und bricht dann ab. Wenn du beides koppeln willst, kannst folgendes machen:
Delphi-Quellcode:
except
on E:Exception do begin if E.ClassNameIs('EOleException') then begin {...} end; {...} end; end; |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
bevor ich das E: hingemacht hatte hats aber funktioniert :)
Aber das was du da grad als Beispiel gegeben hast sieht interessant aus, damit werd ich mal nen bisle Rumspielen :P EDIT: Sind dann in E auch die EOleException Eigenschaften vorhanden? sind doch nur die Eigenschaften von Exception oder? Wie komm ich so noch an die EOleException Eigenschaften? :) MFG Keda |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
genauso:
Delphi-Quellcode:
on E:EOleException do begin
|
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Das is schon klar, meinte aus dem normalen e:Exception...
Aber das geht net, glaub ich ^^ MFG Lucky |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Moin!
Delphi-Quellcode:
Die Exceptions sind nix anderes als Klasseninstanzen abgeleitet von Exception (welche von TObject abgeleitet wurde). Diese sind ohne Probleme Cast-bar. Auch ist ExceptObject innerhalb eines Try/Finally und Try/Except Blockes gültig und gefüllt mit der Exception Instanz. Das On E: Exception Do macht nix anderes als eine Klassenabfrage und einen TypeCast mit ExceptObject zu machen.
If ( E Is EOLEException ) Then
EOLEException(E).Eigenschaft // bzw. ( E As EOLEException ).Eigenchaft MfG Muetze1 |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Das werd ich gleich mal testen :) danke
|
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Hi,
grad mal ne Frage. Warum heißt es immer
Delphi-Quellcode:
? Kann es auch
on E: {blubb} do
Delphi-Quellcode:
heißen?
on x: {Blubb} do
Hab grad kein Delphi zur Hand, sonst könnte ich es testen^^. |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
klar kann das auch X heißen ^^
Bei mir heißt es Error, da weiß ich wenigstens was es ist :) MFG Keda |
Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
Zitat:
Danke :cyclops: Wieder was gelernt ^^ Ich hätte gedacht, dass die anderen Eigenschaften nicht mit übergeben werden... Mit Klassen hatte ich mich vorher nie tiefer beschäftigt und die wörter Cast-bar, TypeCast und ExceptObject sagen mir gar nix ^^ Noch nicht, werde mir das mal tiefer anschaun glaub ich.. MFG Keda |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 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