home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / vp21beta.zip / AEXMPSRC.RAR / DELPHI / XCPTDEMO.PAS < prev   
Pascal/Delphi Source File  |  2000-08-15  |  2KB  |  73 lines

  1. {█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█}
  2. {█                                                       █}
  3. {█      Virtual Pascal Examples. Version 2.1.            █}
  4. {█      Exceptions demonstration example                 █}
  5. {█      ─────────────────────────────────────────────────█}
  6. {█      Copyright (C) 1996-2000 vpascal.com              █}
  7. {█                                                       █}
  8. {▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀}
  9.  
  10. program XcptDemo;
  11.  
  12. {&X+,Delphi+}
  13.  
  14. Uses
  15.   Crt, SysUtils;
  16.  
  17. type
  18.   EParameterError = class(Exception);
  19.  
  20. //
  21. // Guarded GotoLine procedure that raises an exception for an invalid parameter
  22. //
  23. procedure gGotoLine( Line : Integer );
  24. begin
  25.   If ( Line in [1..20] ) then
  26.     GotoXY( 1, Line )
  27.   else
  28.     raise EParameterError.CreateFmt( 'Invalid line number: %d', [Line] );
  29. end;
  30.  
  31. //
  32. // Test procedure, using gGotoLine
  33. //
  34. procedure TestLine( Line : Integer);
  35. begin
  36.   try
  37.     gGotoLine( Line );
  38.     Write( Format( 'Now at Line %d ', [Line] ) );
  39.   except
  40.     on E:Exception do
  41.       begin
  42.         GotoXY( 1, 22 );
  43.         Writeln( 'Error : ',E.Message );     // Write error message
  44.         raise;                             // Re-raise the exception
  45.       end;
  46.   end;
  47. end;
  48.  
  49. procedure Test;
  50. begin
  51.   try
  52.     TestLine( 10 ); // OK
  53.     TestLine( 3  ); // OK
  54.     TestLine( -1 ); // Invalid; generates exception
  55.   except
  56.     on E:EParameterError do
  57.       // Handle invalid parameter case
  58.       Writeln( 'Parameter error in some call' );
  59.     else
  60.       // handle any other exception
  61.       Writeln( 'Unexpected exception occured' );
  62.   end;
  63. end;
  64.  
  65. begin
  66.   ClrScr;
  67.   WriteLn('Virtual Pascal Exceptions Demo     Version 2.1 (C) 1996-2000 vpascal.com');
  68.   Test;
  69. end.
  70.  
  71.  
  72.  
  73.