To: Omega Consulting, Problem with $AbortMessage trap (The Mathematica Journal).
- To: mathgroup at smc.vnet.net
- Subject: [mg70976] To: Omega Consulting, Problem with $AbortMessage trap (The Mathematica Journal).
- From: "Philipp" <Philipp.M.O at gmail.com>
- Date: Fri, 3 Nov 2006 01:39:26 -0500 (EST)
I've been working on an extension to your solution of immediate
interception of Message[] to make it sensitive only to specified
messages (analogous to the Check[]).
But this aside, I have encountered a curious behaviour of your original
solution, namely
In[]:= Unprotect[Message];
Message[args___] :=
(Block[{$AbortMessageQ = False}, Message[args]]; Abort[]) /;
$AbortMessageQ
Protect[Message];
In[]:= $AbortMessageQ = False;
In[]:= (Log[1, 1]; Prime[-120]; StringLength[ToString[N[Pi, 10^5]]])
General::"dbyz": "Division by zero."
\[Infinity]::"indet": "Indeterminate expression
0 ComplexInfinity encountered."
Prime::"intpp": "Positive integer argument expected
in Prime[-120]."
Out[]:= 100001
Now setting he control variable to True
In[]:= $AbortMessageQ = True;
gives the expected result, i.e.,
General::"dbyz": "Division by zero."
Out[]:= $Aborted
However, using Off[] to turn off the first message,
In[]:= Off[General::"dbyz"]
In[]:= (Log[1, 1]; Prime[-120]; StringLength[ToString[N[Pi, 10^5]]])
Out[]:= $Aborted
fails to print the message.
Could you please explain such a curious behaviour, and maybe provide a
remedy?
Cheers,
Philipp
- Follow-Ups:
- Re: To: Omega Consulting, Problem with $AbortMessage trap (The Mathematica Journal).
- From: Carl Woll <carlw@wolfram.com>
- Re: To: Omega Consulting, Problem with $AbortMessage trap (The Mathematica Journal).