home *** CD-ROM | disk | FTP | other *** search
- -- Chapter 17 - Program 3
- with Text_IO;
- use Text_IO;
-
- procedure Except3 is
-
- package Int_IO is new Text_IO.Integer_IO(INTEGER);
- use Int_IO;
-
- procedure Divide_By_Zero(Count : INTEGER) is
- Divide_Result : INTEGER;
- begin
- Put("Count is");
- Put(Count,3);
- Put(" and the answer is");
- Divide_Result := 25/(Count - 4);
- Put(Divide_Result,3);
- New_Line;
- exception
- when Numeric_Error => Put_Line(" Divide by zero occurred");
- end Divide_By_Zero;
-
- procedure Raise_An_Error(Count : INTEGER) is
- My_Own_Error : exception;
- Another_Result : INTEGER;
- begin
- Put("Count is");
- Put(Count,3);
- Another_Result := 35/(Count - 6); -- untested divide by zero
- if Count = 3 then
- raise My_Own_Error;
- end if;
- Put_Line(" and is a legal value");
- exception
- when My_Own_Error => Put_Line(" My own error occurred");
- end Raise_An_Error;
-
- begin
- Put_Line("Begin program here.");
- for Count in 1..7 loop
- Divide_By_Zero(Count);
- Raise_An_Error(Count);
- end loop;
- Put_Line("End of program.");
-
- exception
- when Numeric_Error => Put(" Numeric error detected at the");
- Put_Line(" main program level.");
- Put_Line("Program terminated.");
- end Except3;
-
-
-
-
- -- Result of Execution
-
- -- Begin program here.
- -- Count is 1 and the answer is -8
- -- Count is 1 and is a legal value
- -- Count is 2 and the answer is-12
- -- Count is 2 and is a legal value
- -- Count is 3 and the answer is-25
- -- Count is 3 My own error occurred
- -- Count is 4 and the answer is Divide by zero occurred
- -- Count is 4 and is a legal value
- -- Count is 5 and the answer is 25
- -- Count is 5 and is a legal value
- -- Count is 6 and the answer is 12
- -- Count is 6 Numeric error detected at the main program level.
- -- Program terminated.
-
-
-