title: Raising exceptions is not showing messages
body: <p>I am struggling with something I have always perceived as something straightforward, but apparently I am missing something in this case. </p>
  
  <p>I am using Delphi Seattle.</p>
  
  <p>In part of my program I have a certain main calculation (a loop) that repeatedly calls a sub-calculation.  In certain cases the sub-calculation result will go towards infinity and cause a floating point overflow exception.  I cannot predict this, nor can I define / trap an acceptable maximum value (depends on case) so I need to trap the overflow exception, notify the user and abort the calculation.</p>
  
  <p>I have simplified this calculation to the following example program.  The code itself is nonsense of course but the point is to force an overflow exception in a similar program structure as my real application.</p>
  
  <pre><code>  type
    TForm1 = class(TForm)
      Button1: TButton;
      procedure Button1Click(Sender: TObject);
    private
      { Private declarations }
      function MainCalculation: boolean;
      function SubCalculation(AFloatingPoint: Double): Double;
    public
      { Public declarations }
    end;
  
  .........
  
  procedure TForm1.Button1Click(Sender: TObject);
      begin
        if MainCalculation then
          ShowMessage('Calculation succeeded.')
        else
          ShowMessage('Calculation failed.');
      end;
  
      function TForm1.MainCalculation: boolean;
      var
        ii: Integer;
        dd: Double;
      begin
        try
          dd := 1E200;
          for ii := 1 to 100 do
            dd := dd * SubCalculation(dd);
        except
          raise Exception.Create('Error in main calculation.');
        end;
      end;
  
      function TForm1.SubCalculation(AFloatingPoint: Double): Double;
      begin
        try
          result := Power(AFloatingPoint, AFloatingPoint);
        except
          raise Exception.Create('Error in sub-calculation.');
        end;
      end;
  </code></pre>
  
  <p>Running from the debugger, I get three Debugger Exception Notifications:</p>
  
  <ol>
  <li>Exception class $C0000091 (floating point overflow)</li>
  <li>Exception in sub-calculation</li>
  <li>Exception in main calculation</li>
  </ol>
  
  <p>However, only the last one is shown to the user as an exception.</p>
  
  <p>In my real application it's even worse.  When I run the application and the overflow exception occurs, nothing is shown to the user and the (main) calculation just aborts with partial results.</p>
  
  <p>Can anybody explain to me why I don't get the two exceptions raised (as I would expect)?  Is there a specific setting somewhere that causes the overflow exception to be treated different?  Any suggestion to help me forward will be highly appreciated.  Of course, I'll be more than happy to provide additional details, should this be required.</p>
  
  <p>Thanks in advance!
  Mark</p>