The reference manual states that these work like Lua's, but they don't. Lua's follow the standard Lua idiom of returning nil plus and error message in cases of errors, whereas the moonscript counterpart just signals errors. The manual has it right imho - they should work like Lua's to avoid confusion.
I agree it would be less confusing, and more consistent. Generally Lua APIs only throw errors if there is a parameter error like an imcompatible type, whereas 'failing to compile' is a routine error for a compiler ;)
I agree as well. I think the lua error handling system is perfect, actually. It's just lightweight enough that it doesn't get in the way, but when you need it its powerful enought to get the job done. And the convention of only signaling errors when it's the programmer's fault is clear, consistent, mostly unambiguous, and provides the most practical behavior in nearly every situation.
load* functions return nil and error instead of throwing error fixes #87