Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Strukturierte Ausnahmebehandlung (https://www.delphipraxis.net/23966-strukturierte-ausnahmebehandlung.html)

Luckie 13. Jun 2004 02:10


Strukturierte Ausnahmebehandlung
 
Es gibt unter Delphi ja die strukturierte Ausnahmebehandlung (SEH = Stuctured Exception Handling). jetzt hab eich da mal eine Frage dazu: In meinem Buch ("Windows Programmierung für Experten") steht folgendes:
Zitat:

Man soll die SEH von C++ (throw, catch) nicht mit der der SEH, die in Windows implementiert ist durch einander bringen.
Die in VC Compiler spezifische SEH C++ Syntax lautet:
Code:
__try {


}
__catch {



}
Und die in der C++ Bibliotheken integrierte SEH:
Code:
try {


}
catch {


}
Erstere nutzt also die in der API integrierte SEH und zweitere ist eine C++ spezifische SEH.

Jetzt meine Frage: Wie sieht das in Delphi aus? Ist
Delphi-Quellcode:
try

except

end
die sprachspezifische SEH oder die aus Windows? Oder ist es gar ein Mischmasch?

Muetze1 13. Jun 2004 03:02

Re: Strukturierte Ausnahmebehandlung
 
Moin!

Beides. Delphi verbindet die Windows Exceptions und die Sprachexception mit ein und dem gleichen Exception Handling Block. Das kann man z.B. sehr gut daran erkennen, wenn man in einem Asm / End; eine ungültigen CPU Opcode mit db definiert und der Try / Except Block aussen herum die EInvalidOpcode Message ordentlich mit abfängt (die aber von Windows ausgelöst wird).

Beim BCB ist es eh auch fast das gleiche - ob man nun try / finally schreibt oder __try / __finally oder _try / _finally. Man sollte nur darin nicht mischen (also __try / _finally, etc).

MfG
Muetze1

Luckie 13. Jun 2004 03:08

Re: Strukturierte Ausnahmebehandlung
 
Also sollte man in C++ Sprachexceptionen mit try-catch abfangen und Windows Exceptionen mit __try-__catch? Aber welche Windows Funktionen werfen Exceptionen? Die haben doch alle einen Rückgabewert. Wo ist der Sinn in den Windows Exceptionen?


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