Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   In nonVCL Fehler / Exceptions abfangen ? (https://www.delphipraxis.net/142679-nonvcl-fehler-exceptions-abfangen.html)

turboPASCAL 1. Nov 2009 18:04

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Offtropic
Oh, danke für das Angebot.
Ich nutze da lieber TP 5 oder BP 7 oder Turbo Pascal für Windows. :mrgreen:

sirius 1. Nov 2009 18:49

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Seit wann braucht man fürs Exception-Handliung die Sysutils? Die Sysutils organisiert die Exceptions nur auf Ebene der OOP. Baut also eine Klasse um die Exception und Rekonstruiert dieses Objekt im Except-Block (oder erstellt sogar eins, wenn es eine externe Excpetion war).

Try-except sollte immer funktionieren, allerdings nur mit Sysutils kann man die Exception-Klasse nutzen.

alzaimar 1. Nov 2009 19:23

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Zitat:

Zitat von sirius
Try-except sollte immer funktionieren...

Hmm...
Delphi-Quellcode:
program ExceptionTest;
{$APPTYPE CONSOLE}
Var
  a,b : Integer;

begin
  a := 1;
  b := 0;
  Try
    a := a div b;
  Except
    writeln('Except geht');
  End;
  WriteLn(a); // Damit die Division nicht noch wegoptimiert wird.
end.
Ich müsste also 'Except geht' sehen. Leider hängt sich das Programm auf bzw. terminiert nicht.

himitsu 1. Nov 2009 19:24

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von sirius
Seit wann braucht man fürs Exception-Handliung die Sysutils?

Also, das Exception-Object und andere Dinge sind in der SysUtils definiert und initialisiert.

Und ohne eine Behandlung von Exceptions führen dieses zum sofortigen Programmabbruch.


Vielleicht hilft der Anhang etwas.


Der Debugger bekommt von den Exceptions was mit, aber ansonsten hab ich wohl irgendwo 'nen Fehler,
denn die Exceptions werden leider nicht angezeigt.

siehe #21 ... die Exceptions werden doch angezeigt :-D

Außerdem drehen einige Debugger durch.
Das liegt wohl daran, daß dieses Exception-Objekt anders ist, als sie es kennen.
Es wird nach der Exception zwar ordnungsgemäß weitergearbeitet, aber z.B. D2009 hört da mit dem Debuggen auf und das Programm läuft einfach so weiter.
In D7 geht dieses aber.


PS: die Exceptions sind CL ... haben ja direkt nicht mit der VisualCodeLibrary zu tun :angel2:

turboPASCAL 1. Nov 2009 19:25

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Ohne die Sysutils wird aber das except komplett übersprungen und es ploppt
das "Runtimeerror at 0815xx" auf.

Kannst du ja mit obigen Beispiel ausprobieren.

turboPASCAL 1. Nov 2009 19:42

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Zitat:

Zitat von himitsu
Außerdem drehen einige Debugger durch.
Das liegt wohl daran, daß dieses Exception-Objekt anders ist, als sie es kennen.

Naja, lieber die Debugger als ich. :stupid:

Mir wäre halt wichtig das man im except-Block den Fehler loggen kann oder einen validierten Wert zu weisen kann.

Dein Demo kann ich leider noch nicht testen, SAccessViolationNoArg und einige Andere sind D6 wohl unbekannt.
Mal sehen...

himitsu 1. Nov 2009 19:47

Re: In nonVCL Fehler / Exceptions abfangen ?
 
bei dieser Konstannte kannst'e im Notfall erstmal einfach die ' drumrummachen

Delphi-Quellcode:
'SAccessViolationNoArg'
Nja, es ist halt so einiges mit der Zeit dazugekommen, umbenannt wurden oder es wurde umgelagert.

turboPASCAL 1. Nov 2009 19:52

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Jo, passt schon. :thumb:

sirius 1. Nov 2009 20:25

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Zitat:

Zitat von himitsu
Also, das Exception-Object und andere Dinge sind in der SysUtils definiert und initialisiert.

Habe ich ja geschrieben.

Zitat:

Zitat von himitsu
Und ohne eine Behandlung von Exceptions führen dieses zum sofortigen Programmabbruch.

"Ohne Behandlung" ist die falsche Wortwahl, denn einen Except-Block hat TP ja angegeben. Das Problem ist nur (was ich vorhin noch nicht wusste), das Delphi auf Teufel komm raus aus jeder Exception ein Exceptionobjekt bauen will, was man dann im Except-Block abfragen und auswerten kann. Und wenn Delphi kein Objekt zustande bekommt, dann beendet Delphi einfach das ganze Programm, was recht radikal ist (denn hier wertet TP bspw. gar kein Exceptionobjekt aus und bräuchte es nicht einmal).

himitsu 1. Nov 2009 20:36

Re: In nonVCL Fehler / Exceptions abfangen ?
 
Nja ... Try-Except hat er vielleicht, aber deswegen werden die Exceptions nicht "behandelt",

bzw. wenn nichts Anderes in der Unit System angegeben ist, dann leitet diese die Exceptions direkt an Windows weiter MSDN-Library durchsuchenRaiseException und dieses reagiert dann so
Zitat:

the default action is to call the ExitProcess function.
Obwohl ... müßte man Hagen oder Olly mal fragen ... ich glaub Try-Except war 'nen "frame-based handler"? :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:03 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz