title: FURTHER CLARIFICATION: How to correctly write Try..Finally..Except statements?
body: <p>RE: <a href="https://stackoverflow.com/questions/6601147/how-to-correctly-write-try-finally-except-statements">How to correctly write Try..Finally..Except statements?</a></p>
  
  <p>I'm still confused by the OP's original question. Specifically, the last line of the procedure (outside of the try..finally..end) that reads "Screen.Cursor:=crDefault".</p>
  
  <p>My understanding is that any exceptions raised inside a try..except|finally..end block <em>WILL</em> execute the code after the "end" of the "try".</p>
  
  <pre><code>procedure TForm1.Button1Click(Sender: TObject);
  var
    Obj: TSomeObject;
  begin
    Screen.Cursor := crHourGlass;
  
    Obj := TSomeObject.Create;
    try
      // do something
    finally
      Obj.Free;
    end;
    Screen.Cursor := crDefault;
  end;
  </code></pre>
  
  <p>In the above example, I don't see any reason why "Screen.Cursor:=crDefault" would not be executed. Please correct me if I'm wrong.</p>
  
  <p>As a further example, I've compiled this little bit of code to help illustrate. When the code is ran, THREE (3) ShowMessage() dialogs will be presented. The first "Exception Raised" and the second "finally" and the third "at end".</p>
  
  <pre><code>procedure TForm1.Button1Click(Sender: TObject);
  begin
     try
        try
           showMessage(format('%s', [12]));
        except
           showMessage('Exception raised');
        end;
     finally
        showMessage('finally');
     end;
     showMessage('at end');
  end;
  </code></pre>
  
  <p>So, I'm confused on why his "Screen.Cursor:=crDefault" isn't being ran, in it's original form and code. Can someone please elaborate?</p>