A script error? Really?
You know how I like to say that the simplest things can be the most difficult? Here's another one to consider.
In R3 (and R2) errors tell you their general category. For example, at the console you type:
** Script error: vista has no value
So, is that message really true? (The "Script error" part,
that is. I think we know about the second part - the cow is being milked to the fullest.)
But, is it really a script error? Where's the script?
In fact, this is an evaluation or runtime error, not really a script
error. Those of us who know REBOL understand what the message means. We
translate it in our heads.
Originally, I picked the term "script error" because it sounded more
friendly. It was just pointing out that you created an error with your
These days I regret that naming decision. Yes, it is a small thing, but
I would prefer an error message more like:
** Runtime error: vista has no value
The message could easily be changed. But, "easily" is like that word
"simple". There's a deeper issue.
The problem can be seen in this example:
>> probe try [vista]
make error! [
near: [try [vista]]
The type for the error is identified by the word 'script. If your program
is handling its own errors, it may very well use that type field to figure
out how to proceed. Changing it to 'runtime would require changes to such
It also works the other way around. You can make your own error objects
by specifying the type, id, and arguments of the error. For example:
>> make error! [type: 'script id: 'no-value arg1: 'example]
** script error: example has no value
Here again the word 'script is important. It states the type of the
error, which indicates where the message itself can be found (within
the error message catalog.)
I guess we'll need to stick with "script errors" forever, right? Well,
we can debate it if you like. Now, with R3, this is the time.
Sure, in the bigger picture, it's a small thing. But, it does make a
nice, quick blog topic.
I'm open to your thoughts.