[erlang-questions] proc_lib, throw, and nocatch
Tue Jan 1 09:32:51 CET 2008
erlang(3) documents that 'throw(Any)' has a "Failure" condition of
'nocatch' if the throw wasn't caught.
sasl's user guide 2.3 suggests that any process exit other then
'normal' and 'shutdown' will have a report generated
proc_lib places a "catch" (as opposed to "try/catch") on the stack
and then only creates an error report if the returned value matches
This means if i have a process (that i've spawned with proc_lib so
that i get an error report) that does a 'throw()' that isn't caught,
it's treated by proc_lib as a 'normal' exit. Nothing gets logged.
Links get notified that the process exited 'normal'. Maybe i'm
misunderstanding, but this is not the behavior i expected, nor what i
understood from having read the documentation.
Would it be better if proc_lib were using the try/catch form so that
it can distinguish between returned and thrown values and fail
'nocatch' on the thrown ones?
More information about the erlang-questions