Re: error() or nil, 'error msg'
[
Date Prev][
Date Next][
Thread Prev][
Thread Next]
[
Date Index]
[
Thread Index]
- Subject: Re: error() or nil, 'error msg'
- From: Jorge <xxopxe@...>
- Date: 2014年9月19日 18:05:17 -0300
On 09/19/2014 04:39 PM, Andrew Starks wrote:
Hisham / Jorge:
How do you deal with the following:
1: You parse the input that you receive and you know it to be well-formed.
2: You call a library function that will look for a resource by that
name and, if it fails, returns `nil, error`.
3: That same call may also generate an error. For example, perhaps the
object contains a dependent resource that is in an invalid state.
First, as I said, I don't expect to library to crash me. Then I accept
the library might be unable to return anything back, for _any_ reason.
This means there's a "if ret then" or equivalent somewhere.
Alternatively, if this result is absolutely critical for me continuing
doing stuff, I might wrap the call in an assert. I could also do that
while developping, to reduce the number of cases I have to handle.
If there's no assert, and I got no result, then I might ask what
happened. In your example, I would expect to find in the docs the
"resource does not exist" error, and perhaps a bunch of other weird
error conditions. Probably all bundled in a "unknown error" :)
In other words, I either have a result, or not, and then all the reasons
why not are in one single place.
So my app would be something like:
local ret, err = lib.call('resource_name')
if ret then
--dostuff with ret
else --as long as I care
if err == "does not exist" then
--think hard what to do and why i'm here
else
error(err)
end
end
It's a bit like the socket API and the EAGAIN, which is barely an error
at all, and all the other errors: they are very different conceptually,
all they share is that there's no data returned, but are all handled in
the same manner.
Jorge
- References:
- error() or nil, 'error msg', Andrew Starks
- Re: error() or nil, 'error msg', Rena
- Re: error() or nil, 'error msg', Dirk Laurie
- Re: error() or nil, 'error msg', Andrew Starks
- Re: error() or nil, 'error msg', Jorge
- Re: error() or nil, 'error msg', Hisham
- Re: error() or nil, 'error msg', Andrew Starks