Re: Limiting the number of messages
- To: mathgroup at smc.vnet.net
- Subject: [mg103830] Re: [mg103810] Limiting the number of messages
- From: Sean McConnell <smcconne at physi.uni-heidelberg.de>
- Date: Thu, 8 Oct 2009 07:51:24 -0400 (EDT)
- References: <200910071102.HAA00467@smc.vnet.net>
Actually I've found a reasonably good way of dealing with what I'm talking about. See below... f[a_, b_] /; If[a > 0, True, Message[f::aerror] ] && If[b > 2, True, Message[f::berror] ] := a + b; f::aerror = "a is too small"; f::berror = "b is too small"; t[a_, b_] := If[Check[f[a, b]^2, "Error"] === "Error", "t(" <> StringJoin[Riffle[ToString /@ {a, b}, ","]] <> ")", f[a, b]^2 ]; In[23]:= t[0, 3] t[1, 2] t[0, 2] t[1, 3] During evaluation of In[23]:= f::aerror: a is too small Out[23]= t(0,3) During evaluation of In[23]:= f::berror: b is too small Out[24]= t(1,2) During evaluation of In[23]:= f::aerror: a is too small During evaluation of In[23]:= f::berror: b is too small Out[25]= t(0,2) Out[26]= 16 I realise it's a bit amateur to be re-writing the input as a string for the output (well, actually the whole thing feels more like a work-around than a proper solution), but it's achieving what I'm after I guess?!? Am Mittwoch, den 07.10.2009, 07:02 -0400 schrieb Sean McConnell: > Hi, > > I'm creating a program with procedures that often depend on > sub-procedures. Many times I allow the sub-procedures to do the input > checking, so I don't have to write a the same error trapping conditions > and messages for each level of the program. The problem is however that > although the 'input checking' is passed on to a sub-procedure, the main > procedure continues to attempt to evaluate, and can usually return a > very long list of error messages whilst it foolishly attempting to > evaluate with improperly input variables. > > I would like to know how to make a procedure abort its evaluation after > say 3 or so messages, and simply return the name of the procedure and > the variables (as happens when you use /; for conditionals). I have > tried the use of Check[], and although it checks for messages, it will > only return what is typed in to the space for a second argument (eg: > Check[f[a], "problem"] will return simply "problem"), I would like to be > able to tell the user how they have screwed up. > > Many thanks, > > Sean McConnell. > >
- References:
- Limiting the number of messages
- From: Sean McConnell <smcconne@physi.uni-heidelberg.de>
- Limiting the number of messages