![]() |
Try...Except zeigt keine Wirkung
Hallo an alle!
Ich bin heute schonmal mit einem Problem aus diesem Programm gekommen. Ich habe schon seit einiger Zeit das Gefühl, dass die Try-Except-Anweisungen nicht so richtig funktionieren bei mir, oder ich wende sie falsch an. Vielleicht könnt ihr mir weiterhelfen. Hier mein Code:
Delphi-Quellcode:
Wäre für jede Hilfe dankbar.
If ((GetAsyncKeyState(VK_NUMPAD0)) <> 0) Then
begin Try bombesp1[laufzahl_bombe1] := TImage.Create(Form1); with bombesp1[laufzahl_bombe1] do begin Visible := true; Top := 64; Left := 200; Width := 49; Height:= 65; Stretch := True; Proportional := True; Name := 'Bombe' + IntToStr(laufzahl_bombe1) + '_SP1'; Parent := Form1; Picture.Bitmap.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'bombe.bmp'); end; Except bombesp1[laufzahl_bombe1].Left := Image1.Left; bombesp1[laufzahl_bombe1].Top := Image1.Top; bombesp1[laufzahl_bombe1].Visible := True; Delay(2000); bombesp1[laufzahl_bombe1].Picture.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'bombe_explodiert.bmp'); end; end; Simme |
Re: Try...Except zeigt keine Wirkung
Hallo,
was geht denn nicht? Und du weißt, dass "except" nur dann ausgeführt wird, wenn ein schwerer Fehler im try-Abschnitt auftritt (Zugriffverletzung o.ä.)? Grüße, Matze |
Re: Try...Except zeigt keine Wirkung
Also, kompilierbar ist das ganze. Aber wenn ich diesen Abschnitt praktisch so ausführe, dass er den Try-teil überspringen müsste, kommt ein Fehler: Und er sagt mir, dass das Image mit diesem Namen bereits existiert. Das ist klar, aber genau deshalb sollte er diesen Teil überspringen und direkt zur Except-Anweisung übergehen. Aber er gibt mir die Fehlermeldung. Warum?
Gruß, Simme |
Re: Try...Except zeigt keine Wirkung
Zitat:
|
Re: Try...Except zeigt keine Wirkung
Richtig,
du kannst das in den Optionen auch umstellen: Tools -> Optionen und da irgendwas mit "Bei Delphi-Sprachexceptions stoppen" (Haken entfernen). Grüße, Matze |
Re: Try...Except zeigt keine Wirkung
Zitat:
|
Re: Try...Except zeigt keine Wirkung
Nur mal so am Rande ...
einen try...except ins konzept einzubauen ist mehr als böse. das ist eigentlich dafür gedacht fehler kontrolliert abzufangen um das programm in einem definierten zustand zu belassen. ob du ein TImage erzeugen musst oder nicht kannst du auch "normal" ohne exception abfragen. z.B. ist ![]() P.S.: ich bin ja ein freund der bildlichen sprache: so wie du das try...except hier einsetzt, vermute ich mal, dass ihr vor eurer haustür ein minienfeld habt. nein, gegen besuch habt ihr nix, aber niemend vergisst mehr sein kommen bemerkbar zu machen :mrgreen: |
Re: Try...Except zeigt keine Wirkung
Also danke für die vielen Vorschläge und so.
Mir ging es eigentlich nicht darum, dass ich die Fehlermeldung wegbekomme, sondern darum, dass die Try...Except-Anweisung so funktioniert, wie sie es soll. Aber selbst wenn die Fehlermeldung nicht kam: Er hat dann eben gar nichts aus der Anweisung gemacht: Auch nicht den Except-Teil. Aber gut, ch suche bei sowas dann immer nach Alternativen. Ich habe auch eine gefunden. Ich habe das ganze durch eine If...Then-Anweisung ersetzt. Und jetzt funktioniert alles so, wie es soll. ;) Also trotzdem danke! Lg Simme PS: @Rufo: Ich kann ja nichts dafür, wenn mir mein Info-Lehrer mir die Verwendung der Exception falsch erklärt. Und im Übrigen funktioniert diese Anweisung selbst bei den einfachsten Sachen bei mir nicht. Aber es gibt eigentlich immer Alternativen. Man muss sie eben nur finden. :D |
Re: Try...Except zeigt keine Wirkung
Zitat:
Exceptions sind nicht böse. Also ist das Verwenden von Exceptions auch nicht böse. Und das Abfangen schon gar nicht. Exceptions sind ein 'best practice', um die Behandlung der Ausnahmen (daher der Name) übersichtlich und strukturiert zu implementieren. Die Alternative wäre die Verwendung von Returncodes und was das für Spaghetticode ergibt (IF THEN ELSE IF THEN ELSE ....) wissen all die, die mal mit der Win-API arbeiten durften. Zitat:
Immer, wenn Du eine Methode einer niedrigeren Klasse aufrufst, musst Du diese Aufrufe in Try..Except kapseln und die Exceptions, die diese Methode wirft bzw. werfen kann, in die eigenen (abstrakteren) Exceptions transformieren. Das ist eine Grundregel des Clean Coding, oder Quasar-Konzept oder wie man auch immer das nennen will. Das Try/Except- ein Muss, um robuste und wartbare Software zu schreiben. Allerdings kann man das auch -wie jedes Werkzeug- falsch verwenden: Zitat:
|
Re: Try...Except zeigt keine Wirkung
Zitat:
/EDIT: Ok, ich habe mich verlesen, du wolltest mit Assigned() prüfen ob nicht schon eine Instanz da ist. Aber das war für mich nun unverständlich, da es keine Exception gibt wenn man die Referenzen von vorhandenen Instanzen überschreibt. Somit wäre der gesamte try/except Block nicht für diese Prüfung gedacht. Also alles hinfällig, Sir Rufo. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr. |
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