exceptions.mod 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. IMPLEMENTATION MODULE EXCEPTIONS;
  2. (* ISO EXCEPTIONS implemented over the V3 runtime binding. The opaque
  3. ExceptionSource is an identity token; it is never dereferenced. *)
  4. FROM SYSTEM IMPORT ADDRESS;
  5. IMPORT SysExceptions;
  6. IMPORT M2EXCEPTION;
  7. TYPE
  8. ExceptionSource = ADDRESS;
  9. PROCEDURE AllocateSource (VAR newSource : ExceptionSource);
  10. BEGIN
  11. newSource := SysExceptions.NewSource()
  12. END AllocateSource;
  13. PROCEDURE RAISE (source : ExceptionSource; number : ExceptionNumber;
  14. message : ARRAY OF CHAR);
  15. BEGIN
  16. SysExceptions.RaiseUser(source, number, message)
  17. END RAISE;
  18. PROCEDURE CurrentNumber (source : ExceptionSource) : ExceptionNumber;
  19. BEGIN
  20. IF SysExceptions.IsSource(source) THEN
  21. RETURN SysExceptions.Number()
  22. ELSE
  23. SysExceptions.RaiseLang(ORD(M2EXCEPTION.exException));
  24. RETURN 0
  25. END
  26. END CurrentNumber;
  27. PROCEDURE GetMessage (VAR text : ARRAY OF CHAR);
  28. BEGIN
  29. SysExceptions.CopyMessage(text)
  30. END GetMessage;
  31. PROCEDURE IsCurrentSource (source : ExceptionSource) : BOOLEAN;
  32. BEGIN
  33. RETURN SysExceptions.IsSource(source)
  34. END IsCurrentSource;
  35. PROCEDURE IsExceptionalExecution () : BOOLEAN;
  36. BEGIN
  37. RETURN SysExceptions.Active()
  38. END IsExceptionalExecution;
  39. END EXCEPTIONS.