more try/catch confusion

Brian Acton <>
Wed Apr 7 00:07:00 CEST 2010


Hi guys,

I recently went down the road of doing some xml parsing. Using the xmerl
libraries, I tried writing the following construct:

1> try xmerl_scan:file("broken.xml") catch H -> H end.
2404- fatal: unexpected_end
** exception exit: {fatal,

{unexpected_end,{file,"broken.xml"},{line,92},{col,4}}}

I then tried this construct

2> try xmerl_scan:file("broken.xml") of I -> I catch J -> J end.
2404- fatal: unexpected_end
** exception exit: {fatal,

{unexpected_end,{file,"broken.xml"},{line,92},{col,4}}}

I finally got this to work:

3> case catch xmerl_scan:file("broken.xml") of G -> G end.
2404- fatal: unexpected_end
{'EXIT',{fatal,{unexpected_end,{file,"broken.xml"},
                               {line,92},
                               {col,4}}}}

Now, the question is why do #1 and #2 fail while #3 succeeds? I would have
expected both #1 and #2 to have caught the exception.

--b


More information about the erlang-questions mailing list