Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Exceptions behandeln... Ich glaun ich bin zu plöd.... (https://www.delphipraxis.net/30190-exceptions-behandeln-ich-glaun-ich-bin-zu-ploed.html)

Kedariodakon 21. Sep 2004 18:49


Exceptions behandeln... Ich glaun ich bin zu plöd....
 
Erst mal folgender Code:
Delphi-Quellcode:
...
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;
...
Was soll das machen fragt sich bestimmt jeder :)

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

CenBells 21. Sep 2004 18:51

Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
 
hi,

du musst dir eine variable definieren

Delphi-Quellcode:
try
...
except
  on e: EOleException do begin
  // hier kannst du jetzt was mit e machen..
  end;
end;
Gruß
Ken

Kedariodakon 21. Sep 2004 19:04

Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
 
Zitat:

Zitat von CenBells
hi,

du musst dir eine variable definieren

Delphi-Quellcode:
try
...
except
  on e: EOleException do begin
  // hier kannst du jetzt was mit e machen..
  end;
end;
Gruß
Ken

Danke das mit E hat soweit funktioniert...
Aber ein Prob hab ich immer noch:


Hier nochmal der Code mit dem E-Prinzip erweitert:
Delphi-Quellcode:
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;
Warum geht:
Delphi-Quellcode:
on Error:EOleException do GetError(Error);
Nicht?
Warum muß es:
Delphi-Quellcode:
    on Error:EOleException do begin
      GetError(Error);
    end
    Else begin
    end;
Sein damit es geht? Kapier ich nicht :wall:

MFG Keda

maxk 21. Sep 2004 19:07

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;

Kedariodakon 21. Sep 2004 19:13

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

Pseudemys Nelsoni 21. Sep 2004 20:10

Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
 
genauso:

Delphi-Quellcode:
on E:EOleException do begin

Kedariodakon 21. Sep 2004 20:55

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

Muetze1 21. Sep 2004 21:49

Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
 
Moin!

Delphi-Quellcode:
If ( E Is EOLEException ) Then
  EOLEException(E).Eigenschaft // bzw. ( E As EOLEException ).Eigenchaft
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.

MfG
Muetze1

Kedariodakon 22. Sep 2004 14:07

Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
 
Das werd ich gleich mal testen :) danke

Die Muhkuh 22. Sep 2004 14:25

Re: Exceptions behandeln... Ich glaun ich bin zu plöd....
 
Hi,


grad mal ne Frage. Warum heißt es immer

Delphi-Quellcode:
on E: {blubb} do
? Kann es auch

Delphi-Quellcode:
on x: {Blubb} do
heißen?

Hab grad kein Delphi zur Hand, sonst könnte ich es testen^^.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr.
Seite 1 von 2  1 2      

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