Argh!  I got the nesting level wrong.  (I was working quickly as I had to get on the way to the office.)  You are right, that works, and does handle the error condition.  The actual error report will be in `$@`.  Also, note that your `warn` statement inside the `eval` will be trapped by the `eval`, so that message will never actually be issued as it currently stands.