[REBOL] Re: Help me, Obi Reb Kenobi, you're my only hope!
From: louisaturk:coxinet at: 28-Aug-2002 0:51
My ISP's mail server went done last night, and I was thus unable to send
this. Someone else has probably already helped you by now, but I'll send
At 07:51 PM 8/27/2002 -0700, you wrote:
>OK, so what's going on here.
>I'm trying to put a little error handling around my application. If it
>fails, I need it to send out an alarm. But, depending on the statement, I
>get an error when trying to trap the error.
>For example, this works as expected:
> >> If Error? Fred: Try [ 1 / 0 ] [ Print "Whatever!" ]
>As does this:
> >> If Error? Fred: Try [ 1 / 1 ] [ Print "Whatever!" ]
> >> If Error? Fred: Try [ Print ] [ Print "Whatever!" ]
>But this doesn't:
> >> If Error? Fred: Try [ Print "Get a grip!" ] [ Print "Whatever!" ]
>Get a grip!
>** Script Error: Fred needs a value
>** Near: If Error? Fred: Try [Print "Get a grip!"]
>This is confusing because why should I get an error on something that
>doesn't and shouldn't cause an error.
Try returns either a value or error message from the block it evaluates.
because it lacks an argument returns an error message, which try passes on
print ["Get a grip!"]
outputs a value to the console (thus fooling you), but actually _returns_
nothing (not even an error message, since there is no error); so try in
turn is unable to put a value into Fred. Rebol therefore cannot proceed
After each of your lines type
to see what fred now contains.
Enable try to actually return something and see what happens:
>> If Error? Try [Fred: "Get a grip!" ] [ Print "Whatever!" ]
== "Get a grip!"
At the console type
If it doesn't say that the function returns something, then it probably