Carl Read wrote:
>Hee - wasted time on this myself today!
>
>The problem is that 'print doesn't return a value when 'Fred is
>expecting one...
>
>>>Fred: print "What's wrong with this?"
>>>
>What's wrong with this?
>** Script Error: Fred needs a value
>** Near: Fred: print "What's wrong with this?"
>
>and it's not trapped by your error routine as 'Fred is outside the
>block that's being 'try'ed. Place 'Fred inside it and you'll trap
>the error...
>
>>>If Error? try [Fred: Print "See?"][Print "Whatever!"]
>>>
>See?
>Whatever!
>
Yes. But the value that I was trying to assign Fred was the error that
was to occur when I attempted my action.
More accurately, I have written a couple of daemons, that execute a
command that I pass to it as a parameter. I wanted the daemon to send
out an email if it could not execute the action it was assigned.
Something like this (where Action is the variable that holds the
statement to be executed:
If Error? Error: Try [ Do Action] [ Send Warning email ]
Realizing that Try is similar to Do, I even used:
If Error? Error: Try [ Action] [ Send Warning email ]
The first executed without issue, making me think that everything was
executing OK; it wasn't. The second gave me the "no value" error.
But this is why I'm confused: If try is to be used to help trap errors,
why does it care if a value is set or not? That's why I pointed out that
I got the error when issuing a "write" command. If anything needed to be
trapped, it was that. How else can I tell if a file is not there, or I
don't have access permission, or the file system is too full, etc?
The above statements, BTW, were taken (in form) from a REBOL manual.
They were text-book examples...
>It's possible to write a function that'll check for nothing returned,
>as the any-type! datatype will accept nothing. ie...
>
>nothing-check: func [value [any-type!]][
> either value? 'value [join "that was: " value]['nothing...]
>]
>
>>>nothing-check "abc"
>>>
>== "that was: abc"
>
>>>nothing-check print "abc"
>>>
>abc
>== nothing...
>
>>>nothing-check join "abc" "xyz"
>>>
>== "that was: abcxyz"
>
>>>nothing-check
>>>
>== nothing...
>
I suppose I could use that technique as part of my error trapping, the
question still remains: why? Error trapping should have to do with
trapping errors, not (just) return values.
--
Sincerely, | Cold Hearted Orb, that rules the night. Removes
Ed Dana | the colours from our sight! Red is gray and
Software Developer | yellow white! But we decide which is right...
1Ghz Athlon Amiga | And which is an illusion!
| -- The Moody Blues, Late Lament.
=========== http://members.cox.net/edanaii/Home/Default.html ===========
--
To unsubscribe from this list, please send an email to
[EMAIL PROTECTED] with "unsubscribe" in the
subject, without the quotes.