The Ada Program: fragment2.adb

  1 --: an Ada block declaring, raising, and handling exceptions
  2 
  3 Block_Y:  declare
  4 
  5     E1, E2: exception;
  6 
  7     procedure P (N: Integer) is begin raise E1; end P;
  8 
  9     function F (N: Integer) return Integer is
 10     begin
 11         raise E2;
 12     exception
 13         when E1 => Text_IO.Put_Line ("handler 1"); return (1);
 14         when E2 => Text_IO.Put_Line ("handler 2"); return (2);
 15     end F;
 16 
 17 begin
 18 
 19     P (F (0));
 20 
 21 exception
 22 
 23     when E1 => Text_IO.Put_Line ("handler 3");
 24     when E2 => Text_IO.Put_Line ("handler 4");
 25 
 26 end Block_Y;