Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Throws in Delphi? (https://www.delphipraxis.net/139973-throws-delphi.html)

Forlan 9. Sep 2009 12:44


Throws in Delphi?
 
Hallo zusammen.

Java Code:
Code:
public static void main (String [] args ) throws IOException, ClassNotFoundException{}
Gibt es eine solche Methode auch in Delphi? Bei vielen try/except Blöcken könnte das einige Zeilen code ersparen...

MfG,

Meflin 9. Sep 2009 12:45

Re: Throws in Delphi?
 
Nein, gibt es nicht. Und wie das Code ersparen soll verstehe ich auch nicht :gruebel:

mirage228 9. Sep 2009 12:46

Re: Throws in Delphi?
 
Man kann sich von Eclipse automatisch die Exception-Handler bzw. weitere throws-Deklarationen anlegen lassen :mrgreen:

Forlan 9. Sep 2009 12:47

Re: Throws in Delphi?
 
Zitat:

Und wie das Code ersparen soll verstehe ich auch nicht.
In Java ist es doch so, dass man entweder z.B. 10 try catch Blöcke hintereinander schreibt, oder nur einmal die Throws Methode im Funktionskopf aufruft.

Und das spart eindeutig Zeilen an Code :mrgreen:

Angel4585 9. Sep 2009 12:47

Re: Throws in Delphi?
 
Zitat:

Zitat von Meflin
Nein, gibt es nicht. Und wie das Code ersparen soll verstehe ich auch nicht :gruebel:

Naja es gibt halt direkt Compilermeldungen wenn die Methode evtl ne Exception schmeissen könnte und das man den bestimmten Typ der Exception handlen sollte, also entweder weiterleiten oder was damit machen.

Delphi gibt zwar prinzipiell alle exceptions weiter bis fertig ist, aber Compilerhinweise wären nicht verkehrt

Meflin 9. Sep 2009 13:28

Re: Throws in Delphi?
 
Zitat:

Zitat von Forlan
In Java ist es doch so, dass man entweder z.B. 10 try catch Blöcke hintereinander schreibt, oder nur einmal die Throws Methode im Funktionskopf aufruft.
Und das spart eindeutig Zeilen an Code :mrgreen:

Das ist Quatsch?! Das throws im Funktionskopf ist Pflicht und zeigt an, welche Exceptions die Methode auslösen _könnte_. Ausgelöst wird dadurch keine einzige. Wenn du eine auslösen willst, musst du das weiterhin "per Hand" machen. Und wenn es dir ums abfangen geht... wie gesagt, die Angabe im Kopf ist eh Plficht. Catch-Block sparst du damit keinen ein.

Zitat:

Zitat von mirage228
Man kann sich von Eclipse automatisch die Exception-Handler bzw. weitere throws-Deklarationen anlegen lassen :mrgreen:

:mrgreen:

mjustin 9. Sep 2009 20:18

Re: Throws in Delphi?
 
Zitat:

Zitat von Meflin
die Angabe im Kopf ist eh Plficht. Catch-Block sparst du damit keinen ein.

Eigentlich schon - im Kopf deklarierte Exceptions braucht man im Methodenrumpf nicht mehr zu catchen. Ich nehme an, das war mit "Vorteil" gemeint. Es ist aber auch kein echter Vorteil sondern nur ein Weiterschieben der Verantwortung für die Exceptionbehandlung an die aufrufende Funktion (die das Spiel dann wiederholen kann).

Cheers,

Medium 9. Sep 2009 21:19

Re: Throws in Delphi?
 
Ich wollte schon grad sagen... An sich hat man mit der Angabe im Kopf im Vergleich zu Delphi eben genau diese mehr zu schreiben in Java. Delphi-Exceptions werden ja ohnehin immer an den Aufrufer weitergegeben wenn sie nicht explizit in der Methode abgefangen werden. Diese Deklarationen sind auch mit ein Grund warum ich Java nicht so schön finde. Man schafft eine Konvention ab (transparentes Weiterleiten an Aufrufer), und ersetzt sie durch mehr Text, der nicht einmal optional ist. So eine throws-Liste kann nämlich ein ganz schön üppiger Klumpen werden manchmal. Ich sehe keinen Grund dafür, sich sowas in Delphi zu wünschen.
Klar, ich kann so immer nachlesen was die Methode so alles werfen könnte, aber sowas gehört meiner Meinung nach wenn dann in eine Dokumentation, wer mag auch gerne als Doku-Kommentare in den Source, aber doch nicht als Teil der Syntax!


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