Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#21

AW: [Quiz] wann darf auf ein Semikolon ein ELSE folgen?

  Alt 1. Apr 2015, 18:45
Zu welcher dieser On-Bedingungen würde das Else gehören? Beispiel aus: http://www.delphipraxis.net/184526-%...ml#post1295838
Delphi-Quellcode:
program FunWithDelphi;
 
{$APPTYPE CONSOLE}
 
uses
  Controls, SysUtils;
 
begin
  try
    raise TMouse.Create;
  except
    on E:Exception do
    begin
      Writeln(E.Classname, ': E is Exception');
    end;
    on E:TObject do
    begin
      Writeln(E.Classname, ': E is TObject');
    end;
    on E:TMouse do
    begin
      Writeln(E.Classname, ': E is TMouse');
    end;
  end;
  ReadLn;
end.
Hier ein anderes Beispiel:
Delphi-Quellcode:
var
  t: TDateTime;
  a: Integer;
begin
  try
    t := StrToDate('40.01.2015');
    ShowMessage(DateToStr(t));

    a := 5;
    ShowMessage(IntToStr(10 div (a-5)));
  except
    on E:EDivByZero do
      ShowMessage('Division durch Null.');
  else
    ShowMessage('Sonstige Fehler.');
  end;
end;
Division durch Null wird im Except-Block ausgeführt. Fallen sonstige Fehler an, werden die in Else abgearbeitet.

Übrigens, wusste ich bisher auch nicht, aber On..funktioniert im Except-Block nur wenn sonst keine Anweisungen in dem Block vorhanden sind. Das klappt also nicht:
Delphi-Quellcode:
var
  t: TDateTime;
  a: Integer;
begin
  try
    t := StrToDate('40.01.2015');
    ShowMessage(DateToStr(t));

    a := 5;
    ShowMessage(IntToStr(10 div (a-5)));
  except
    on E:EDivByZero do
      ShowMessage('Division durch Null.');

    ShowMessage('Sonstige Fehler.');
  end;
end;
Geht nicht. Wird gar nicht erst kompiliert.
  Mit Zitat antworten Zitat