Re: immediate abort at error messages
- To: mathgroup at smc.vnet.net
- Subject: [mg55906] Re: [mg55764] immediate abort at error messages
- From: Omega Consulting <info at omegaconsultinggroup.com>
- Date: Sat, 9 Apr 2005 03:56:17 -0400 (EDT)
- References: <200504051010.GAA01066@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
This is quite a creative trick. Unfortunately, it doesn't look like you can use it and get the message. $Messages is a list of OutputStreams that any messages are written to. If the OutputStream is stdout, then you get the normal message. If it is an OutputStream to a file, then it is written to that file. So I thought that the following might work, but it doesn't: $Messages := {OutputStream["stdout",1], Abort[]} Why not? Because $Messages is evaluated *before* the messages are actually sent to the streams. Still there is another trick we can use, called a trap. A message is created whenever the Message function is called. We can redefine this function by unprotecting it. In[1]:= Unprotect[Message]; Now we create a global variable to indicate what we want to do with a Message. When the variable is True, we want to deviate from the default behavior. When False, we want the default behavior (i.e. a message). In[2]:= $AbortMessage=True; Now we add a definition for when the variable is True. It calls Message with the variable set to False (creating a message) and then Aborts. In[3]:= Message[args___] := (Block[{$AbortMessage=False}, Message[args] ]; Abort[] )/;$AbortMessage To be safe we re-protect Message. In[4]:= Protect[Message]; Now we try it. In[5]:= (Sin[2,2];Print[2]) Sin::"argx": "Sin called with 2 arguments; 1 argument is expected. More?" Out[5]= $Aborted ---------------------------------------------- Omega Consulting The final answer to your Mathematica needs. http://omegaconsultinggroup.com On Apr 5, 2005, at 5:10 AM, Marcus Stollsteimer wrote: > Hi group, > > I recently learned that there is a way to immediately abort > when an error occurs in the middle of a cell, so that Mathematica > does not try to evaluate the subsequent expressions with > possibly bad input: > > with > > $Messages:=Abort[] > > (see message <2430df44.0411240157.4d06479a at posting.google.com>) > > but now, when an error occurs, Mathematica aborts without any > message... > it would be useful to still see the error message, > is there a way to do this (display message, then abort)? > > Best regards, > Marcus > > -- > Money is better than poverty, if only for financial reasons. > -- W. Allen >
- Follow-Ups:
- Re: Re: immediate abort at error messages
- From: Chris Chiasson <chris.chiasson@gmail.com>
- Re: Re: immediate abort at error messages
- References:
- immediate abort at error messages
- From: Marcus Stollsteimer <marcus314@yahoo.com>
- immediate abort at error messages