ExceptionHandling (Delphi)
From RAD Studio Code Examples
Language:
Description
This example demonstrates exception handling to catch run-time errors.
Code
procedure TForm2.btIOErrorClick(Sender: TObject); var ExceptionObj : TObject; begin { Try to write something onto the console--it will raise an exception. } try WriteLn('This will generate an error because there is no' + ' console attached!'); except ExceptionObj := ExceptObject; if ExceptionObj = nil then MessageDlg('No exception', mtError, [mbOK], 0) else begin MessageDlg(ExceptionObj.ToString, mtError, [mbOK], 0); end; end; end; {$OVERFLOWCHECKS ON} {$OPTIMIZATION OFF} {$HINTS OFF} procedure TForm2.btOverflowErrClick(Sender: TObject); var b : Cardinal; ExceptionPtr : Pointer; begin { Simulate an overflow. Note: Enable the overflow checking and disable optimizations, because the Delphi compiler will not compile this code otherwise. } ExceptionPtr := nil; try b := $FFFFFFFF; b := b * b; except ExceptionPtr := AcquireExceptionObject; end; // Check exception. if ExceptionPtr = nil then MessageDlg('No exception', mtError, [mbOK], 0) else begin MessageDlg(TObject(ExceptionPtr).ToString, mtError, [mbOK], 0); ReleaseExceptionObject; end; end; {$HINTS ON} {$OPTIMIZATION ON} {$OVERFLOWCHECKS OFF} procedure TForm2.btRuntimeErrorClick(Sender: TObject); var ExceptionObj : TObject; begin { Simulate an access violation. } try System.Error(reAccessViolation); except ExceptionObj := ExceptObject; if ExceptionObj = nil then MessageDlg('No exception', mtError, [mbOK], 0) else begin MessageDlg(ExceptionObj.ToString, mtError, [mbOK], 0); end; end; end; procedure TForm2.FormCreate(Sender: TObject); begin end;
Uses
- System.AcquireExceptionObject ( fr | de | ja )
- System.ExceptObject ( fr | de | ja )