Inequalities posting: Errors.m
- To: mathgroup at yoda.physics.unc.edu
- Subject: Inequalities posting: Errors.m
- From: mstankus at oba.ucsd.edu (Mark Stankus)
- Date: Fri, 20 Nov 92 11:24:38 PST
(* The following package allows an abort to be executed.
An example of its usage would be
foo defintitions here
...
foo[x___] := BadCall["foo",x];
*)
(* :Title: Errors // Mathematica 1.2 and 2.0 *)
(* :Author: Mark Stankus (mstankus). *)
(* :Context: Errors` *)
(* :Summary:
*)
(* :Alias:
*)
(* :Warnings:
*)
(* :History:
*)
BeginPackage["Errors`"];
Clear[BadCall];
BadCall::usage =
"BadCall[string,rest] reports an error message \
indicating that the routine with name \
given by string was called incorrectly and rest \
is the nonheaded list of parameters sent to that routine. \
BadCall records the erroneous arguments. See \
WhatAreBadArgs. BadCall then makes the aggresive move \
of calling Abort[]!";
Clear[WhatAreBadArgs];
WhatAreBadArgs::usage =
"WhatAreBadArgs[] returns the error list of the \
most recent call to BadCall. See BadCall.";
Begin["`Private`"];
BadCall[name_String,param___] := Block[{},
Print["Severe error from :-( ",name];
ErrorArgs = List[param];
Print["The parameters are (as a list)",Short[ErrorArgs,3]];
Print["Bad argument can be retrieved by a call to WhatAreBadArgs"];
Print["\n\n Here is the stack:\n\n\n"];
Print[Shallow[Stack[_],{2,4}]];
Abort[];
];
BadCall[___] := Block[{},
Print["If you see this message, send a message to ncalg and"];
Print["tell us that we have a bad call error."];
Abort[];
];
WhatAreBadArgs[] := ErrorArgs;
End[];
EndPackage[]