http://www.adaconcept.com/programs/ontozorendszeres_szimulacio/hiba_kezelo.adb
with Ada.Exceptions;                                                                     -- azert, hogy reszletesebb / olvashatobb informacioink legyenek az esetleges hibakrol

with Ada.Text_IO;                                                                        -- gyakran nem megengedett, hogy a csomagok kozvetlenul elerjek az Ada.Text_IO - es mas "kulso" - csomagot (ettol most eltekintunk)

package body Hiba_Kezelo is


   procedure Program_Leallitas (Hiba_Uzenet : String) is
   begin
      Ada.Exceptions.Raise_Exception(Program_Leallas_Hiba'Identity, Hiba_Uzenet);
      -- raise Program_Leallas_Hiba with Hiba_Uzenet;                                    -- Ada 2005
   end Program_Leallitas;


   procedure Futtatas(Foprogram : Foprogram_Mutato_Tipus) is
   begin

      if Foprogram /= null then                                                          -- az ilyen jellegu ellenorzesek helyett (Ada 2005 null exclusion)
         Foprogram.all;                                                                  -- meghivjuk a mutatott eljarast, ami sok esetben "vegtelen ciklust" tartalmaz
      else
         Program_Leallitas("Nincsen megadva ""Foprogram""!");
      end if;


   exception
      when H : Hiba_Kezelo.Program_Leallas_Hiba =>
         Ada.Text_IO.Put_Line(Ada.Exceptions.Exception_Name(H) & " lepett fel!");
         Ada.Text_IO.Put_Line("Informaciok:");
         Ada.Text_IO.Put_Line(Ada.Exceptions.Exception_Information(H));
      when H : others =>
         Ada.Text_IO.Put_Line("Ismeretlen eredetu hiba:");
         Ada.Text_IO.Put_Line(Ada.Exceptions.Exception_Information(H));
   end Futtatas;


end Hiba_Kezelo;