Re: OnError [Thread"::"tdlen"]
- To: mathgroup at smc.vnet.net
- Subject: [mg132622] Re: OnError [Thread"::"tdlen"]
- From: "EMartin" <eMartinSerrano at telefonica.net>
- Date: Wed, 23 Apr 2014 04:52:08 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20140411061209.CF9E86A3F@smc.vnet.net> <CAEtRDSe0CjWMc3HFAHsMiVBt3wp1euOuQJZ1j5fmKCsRDSROqA@mail.gmail.com>
Hi Bob, Thanks for your answer but 'Check' does not work as I expected, or I do not understand the cryptic direction in the help. "Check[expr, failexpr] evaluates 'expr', and returns the result (of expr), unless messages were generated, in which case it evaluates 'failexpr' and returns the result of the evaluation of 'failexpr'. " I tried so but I failed in dumpping the Stack[] contents, that I attempted. The key point is that Mathematica should return (or empowered the programmer to handle) the whole context where an error is produced, note that the 'line number' which sometimes appears in the messages raised by the system is unreachable in practical terms for average users like me (or at least to costly); it is one of those Mathematica arcane. Is there any facility to, at least, get such line numbers? As an example of the problem I am facing to bring to work a great deal of my 'old' pieces of software, years ago (maybe ten), I wrote, and submitted to Mathgroup, a routine to catch improper function calls (calls with faulty actual parameters). It was not about catching the point where the error comes up but about why the error takes place due to a function call with data generated somewhere else. The routine damped the Stack[] to help in rebuilding the whole context as to do some sort of forensic analysis since the source of the error can be truly far away from the point where the conflict is discovered. But thanks again Bob E. Martin-Serrano De: Bob Hanlon [mailto:hanlonr357 at gmail.com] Enviado el: viernes, 11 de abril de 2014 15:34 Para: EMartin CC: MathGroup Asunto: Re: OnError [Thread"::"tdlen"] "Check[expr, failexpr] evaluates expr, and returns the result, unless messages were generated, in which case it evaluates and returns failexpr. " Bob Hanlon On Fri, Apr 11, 2014 at 2:12 AM, EMartin <eMartinSerrano at telefonica.net <mailto:eMartinSerrano at telefonica.net> > wrote: Hi, Many classic programming languages provide a command to interrupt computations when some exception arises, allowing to perform any action on the exception as in something as, for example: OnError [] do (action)] [routine] (*This could be the general pattern*) OnError [] do (Print[Stack]; Abort[] ) [routine] (*This could be a more specific pattern*) OnError [Thread"::"tdlen"] do JumpToCheck ][routine] (*The above could be a more specific but even more general pattern. The jump made to an exception handling routine to evaluate or treat the exception*) These catching commands should be located at the beginning of the whole code as in *TimeConstrained[routine, time]* which aborts the routine if it takes more than time seconds. Mathematica has got enough stuff to deal with erroneous situation (Abort, Interrupt, Catch, Throw,=85) provided one is able to catch the exception (and its type) as soon as it arises , but I never was able to do it. Since Mathematica prints the errors messages, the type of the exception and the exact point where it arises is available (but hidden) to let the user to take control. Probably the tool is already available but I can find it. Any help will be welcome E. Martin-Serrano __________________________________________ This e-mail and the documents attached are confidential and intended solely for the addressee; it may also be privileged. If you receive this e-mail in error, please notify the sender immediately and destroy it. As its integrity cannot be secured on the Internet, no sender92s liability can be = triggered for the message content. Although the sender endeavors to maintain a computer virus-free network, he/she does not warrant that this transmission is virus-free and will not be liable for any damages resulting from any virus transmitted. Este mensaje y los ficheros adjuntos pueden contener informaciF3nconfidencial destinada solamente a la(s) persona(s) mencionadas anteriormente y su contenido puede estar protegido por secreto profesional y en cualquier caso el mensaje en su totalidad est=E1 amparado y protegido por la legislaci=F3n vigente que preserva el secreto de las comunicaciones, y por la legislaci=F3n de protecci=F3n de datos de car=E1cter personal. Si usted recibe este correo electr=F3nico por error, gracias por informar inmediatamente al remitente y destruir el mensaje. Al no estar asegurada la integridad de este mensaje sobre la red, el remitente no se hace responsable por su contenido. Su contenido no constituye ning=FAn compromiso para el remitente, salvo ratificaci=F3n escrita por ambas partes. Aunque se esfuerza al m=E1ximo por mantener su red libre de virus, el emisor no puede garantizar nada al respecto y no ser=E1 responsable de cualesquiera da=F1os que puedan resultar de una transmisi=F3n de virus.
- References:
- OnError [Thread"::"tdlen"]
- From: "EMartin" <eMartinSerrano@telefonica.net>
- OnError [Thread"::"tdlen"]