Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Prism exception handling (https://www.delphipraxis.net/72598-exception-handling.html)

xthing 3. Jul 2006 16:37


exception handling
 
Hi Leute,

ich habe ein Programm, das manchmal aus ungekannten Gründen abstürzt. Nun möchte ich mit einem Exception Handling mir den Grund des Absturzes anzeigen lassen. Kann mir jemand einen Tipp geben wie ich das am besten mache.

Danke im voraus.

Gruss
xthing

DGL-luke 3. Jul 2006 16:43

Re: exception handling
 
nuja...

Code:
try
{
  verdaechtiger_code();
}
catch
{
  throw new Exception('verdaechtiger code hat geworfen');
}
so gehts in C#... in Delphi.NET wie gehabt, try...except...end / try...finally...end.

Oder gehts dir um die Grundzüge des Exception Handling?

xthing 3. Jul 2006 16:53

Re: exception handling
 
@DGL-luke
Danke, aber ich mcöhte den Grund der Execption nicht selber angeben, also nicht "verdächtiger code hat geworfen", sondern den Grund für das Scheitern vom System(Programm) her erfahren.

Gruss
xthing

DGL-luke 3. Jul 2006 16:55

Re: exception handling
 
Das nennt sich debugging und sollte in .Net eigentlcih hervorragend funktionieren. Wenn eine Exception auftritt, musst du nur deinen Callstack durchgehen, bis du bei einer Funktion bist, die du kennst (das VS macht das ganz wundervoll :love: ) ;)

Ich kann dir leider nicht genau sagen, wie du in D.Net zum Callstack kommst(Ansicht|Debugging|Aufrufstack?). In Win32 sollte es Strg+Alt+S sein.

Waldteufel 3. Jul 2006 17:35

Re: exception handling
 
Hi. :hi:

Zitat:

Zitat von xthing
Danke, aber ich mcöhte den Grund der Execption nicht selber angeben, also nicht "verdächtiger code hat geworfen", sondern den Grund für das Scheitern vom System(Programm) her erfahren.

Ich weiß nicht genau, was du meinst, aber hiermit sollte dir geholfen sein:
Delphi-Quellcode:
try
  // Fehleranträchtiger Code

  // z.B
  raise Exception.Create('Mööööööp!');
 
  // oder
  i := 0
  j := 5 / i;

  // oder
  meinPointer := nil;
  String(meinPointer^) := '';
except
  on E : Exception do
  begin
    ShowMessage(E.Message);
  end;
end;
Edit: In C# geht's so:
Code:
try {
  // Fehleranträchtiger Code

  // z.B
  throw new Exception("Mööööööp!");
 
  // oder
  i = 0
  j = 5 / i;
} catch (Exception E) {
  System.Windows.Forms.MessageBox.Show(E.ToString(), "Blablubbsel: Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:29 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