Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Warum zeigt Application.ShowException(..) die INNERSTE?

  Alt 24. Aug 2015, 09:22
Delphi-Version: XE7
Das macht doch irgendwie keinen Sinn. Folgendes Beispiel:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
resourcestring
   errorMsg = 'The calculation failed';
var
   divisor: Single;
   result: Single;
begin
   divisor := 0.0;
   try
      result := System.Pi() / divisor;
   except
      Exception.RaiseOuterException(
         EProgrammerNotFound.Create(errorMsg)
      );
   end;
end;
TApplication.ShowException(..) ist folgendermaßen definiert:
Delphi-Quellcode:
procedure TApplication.ShowException(E: Exception);
var
  Msg: string;
  SubE: Exception;
begin
  Msg := E.Message;
  while True do
  begin
    SubE := E.GetBaseException;
    if SubE <> E then
    begin
      E := SubE;
      if E.Message <> 'then
        Msg := E.Message;
    end
    else
      Break;
  end;
[...]
Was macht das für einen Sinn dem Benutzer "Floating Point division by Zero" statt "The calculation failed" anzuzeigen? Das ist doch grade der Sinn von geschachtelten Exceptions, dass ich hier sagen kann, was allgemein falsch lief, und nicht welches spezielle Byte umgefallen ist.

Erleuchtet mich.
  Mit Zitat antworten Zitat