Announcement

Collapse
No announcement yet.

Exception wird nicht ausgelößt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Exception wird nicht ausgelößt

    Hallo,

    ich habe ein grundlegendes Problem. Nach meiner Meinung muss der Folgende Testcode

    Try
    Try
    i := 10 / 0 ;
    Except
    S := 'Fehler1 ' ;
    i := 0 ;
    raise ;
    End ;
    except
    S := S + ' - Fehler2' ;
    End ;

    das Ergebnis "Fehler1 - Fehler2" in der globalen Variabele S liefern.
    Er springt aber einfach raus als wäre der Except Block leer.

    Kann mir jemand sagen warum? Ich arbeite mit Delphi7 und habe für dieses Beispiel keine Debug-Einstellungen geändert.

    Gruss
    Andreas

  • #2
    Hallo Andreas,
    ich habe das Beispiel mit Delphi 7 getestet. Bei Delphi 7 optimiert der Compiler den Ausdruck i := 10 / 0 weg. Nur wenn ich die Null in einer zweiten Variable habe (z.B. j = 0), dann wird die Zeile überhaupt verwendet (i := 10 / j). Wenn aber i nach dem try .. except nicht mehr verwendet wird, dann optimiert mir der Compiler auch da die gesamte exceptionbehandlung weg.

    Hier mein Testprogramm, mit dem es funktioniert:
    <pre>var j, i: Extended;
    S: String;
    begin
    i := 123;
    j := 0;
    S := 'nono';
    Try
    Try
    i := 10 / j;
    Except
    S := 'Fehler1 ' ;
    i := 0 ;
    raise ;
    End ;
    except
    S := S + ' - Fehler2' ;
    End ;

    S := Format('%s; %1.3f', [S, i]);
    Application.MessageBox(PChar(S), 'Test', 0);</pre>

    Alternativ kannst Du natürlich auch versuchen, die Optimierung abzuschalten.

    Gruß
    Richar

    Comment

    Working...
    X