Roger, Many thanks for your prompt response. As noted by Alain, .za indicates South Africa - I am based in Johannesburg. Your response explains why different errors would be signalled as a result of evaluation of B0 in case0 and case1 on the one hand, and case2 on the other. What I am still not clear on is why in "try. B0 catch. B1 end." the value error in B0 in case2 is caught, and the result of B1 is returned, whereas in case0 and case1 the syntax error is not caught. According to the dictionary entry ctry.htm "catch. catches an error in B0". No mention is made of any particular errors that will not be caught.
-----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Roger Hui Sent: Tuesday, 22 April 2008 18:29 To: Programming forum Subject: Re: [Jprogramming] try. B0 catch. B1 end. The behaviour exhibited by your examples can be explained by the following: a. A value error is signalled if the definition of a verb is needed but that verb is undefined: undefined + 1 |value error: undefined | undefined+1 b. An undefined name is treated as a verb and, unless its definition is needed, is not an error: 3 : ('undefined';'3+4') 5 7 c. A syntax error is signalled if a verb returns a verb result. 3 : ('3+4';'*') 5 |syntax error | 3 :('3+4';'*')5 p.s. Are you really based in Zambia, or is it just where your ISP is located? ----- Original Message ----- From: "Jeff.Mosmann" <[EMAIL PROTECTED]> Date: Tuesday, April 22, 2008 8:33 Subject: [Jprogramming] try. B0 catch. B1 end. To: [email protected] > I have come across a situation where < try. B0 catch. B1 end. > > appears to behave inappropriately. > > If the rightmost element of B0 is an undefined name, the > expected value error is not caught, but breaks the control > structure with a syntax error. > > If, however, there is another element to the right of the > undefined name, > then the structure behaves as expected > and B1 is executed. > > case0=: 3 : 'try. notdefined > catch. ''breaks'' end.' > > case0 > |syntax error: case0 > | case0'' > > case1=: 3 : 'try. 1+ notdefined catch. ''also > breaks'' end.' > > case1 > |syntax error: case1 > | case1'' > > case2=: 3 : 'try. notdefined +1 catch. ''but > this works!'' end.' > > case2 '' > but this works! > > Is this a bug? Or have I missed something .. ? No virus found in this outgoing message. Checked by AVG. Version: 7.5.519 / Virus Database: 269.23.3/1390 - Release Date: 2008-04-21 16:23 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
