Exception handling



Exception handling
Smart pascal source code
type MyException = class(Exception); type OtherException = class(Exception) end; { main.pas } Begin try raise MyException.Create('exception message'); except on e: MyException do WriteLn('MyException: ' + e.Message); on e: OtherException do WriteLn('OtherException: ' + e.Message); else WriteLn('Else'); end; try raise OtherException.Create('exception message'); except on e: MyException do WriteLn('MyException: ' + e.Message); on e: OtherException do WriteLn('OtherException: ' + e.Message); else WriteLn('Else'); end; try raise Exception.Create('exception message 1'); except on e: MyException do WriteLn('MyException: ' + e.Message); on e: OtherException do WriteLn('OtherException: ' + e.Message); else WriteLn('Else'); end; try raise OtherException.Create('exception message 2'); except on e: Exception do WriteLn('MyException: ' + e.Message); else WriteLn('Invisible'); end; var t := True; try try if t then raise Exception.Create('exception message 3'); WriteLn('Invisible'); finally WriteLn('Finally'); end; WriteLn('Invisible'); except WriteLn('Except'); end; { <<< CONSOLE OUTPUTS >>> MyException: exception message OtherException: exception message Else MyException: exception message 2 Finally Except } end;