lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

On Sat, 28 Sep 2013 17:37:55 -0400
Sean Conner <> wrote:
> I could go through more errors, but basically, they will all fall into one
> of four catagories (in no particular order) [3]:
>     1. programming errors, like EBADF (not an open file, or the operation
>        couldn't be done given how the file was open originally) or EINVAL
>        (invalid parameter) that need to be fixed, but once fixed,
>        neverhappens again;
>     2. it  can be fixed, like EACCESS (bad privileges) or ELOOP (too many
>        symbolic links when trying to resolve a filename) but that the fix
>        has to happen outside the scope of the program, but once fixed, tends
>        not happen again unless someone made a mistake;
>     3. better exit the program as quickly and cleanly as possible because
>        something bad, like ENOMEM (insuffient kernel memory) just happened
>        and things are going bad quickly. Depending upon the circumstances, a
>        fast, hard crash might be the best thing to do;
>     4. and finally, the small category of errors that a program might be
>        able to handle, like ENOENT (file doesn't exist) depending upon the
>        context (it could then create the file, or ask the user for a
>        different file, etc.).
>   #1-3 are in the class of "print an error message and stop" (and error()
> will give you something you can print) while #4 is something that could be
> handled (and is handled badly if you use exceptions for this class, in my
> opinion).  And in looking over the possible Lua errors [2], I don't think
> there are any in class #4.

Just to avoid any confusion, [2] is just a regex hack to get a very rough idea about the variety of Lua errors outside official error codes. It's in no way comprehensive or scientific, for that matter, i.e. miles away from a serious static code analysis tool with callgraphs and whatnot. (Note to self: do not publish code without a giant disclaimer:)

Specifically, to draw conclusions about your 4th error category (non-terminal errors) you'd have to dig WAY deeper in Lua's C code.


-- p

> > [1]
> > 
> > [2]
> [3]