Variable 'Error' unsafe in 'try'

Adam Lindberg <>
Fri Oct 2 09:30:46 CEST 2009


Hi!

I'm working with some try-catch exceptions and have stumbled upon something which I think is a bit wierd. There was an explanation a year ago on the mailing list which explained why variables bound inside the try-catch expression were not safe to use when an exception got caught (http://erlang.org/pipermail/erlang-bugs/2008-November/001083.html). This is fully understandable.

I've compacted my case to this minimal one:

test() ->
    try ok catch
        _:Error -> Error
    end,
    try ok catch
        _:Error -> Error
    end.

I get an error saying that the variable 'Error' is unsafe in the first line of the function (the first try-catch statement). With just one try-catch statement it works fine.

Why is this? I was under the impression that stuff inside try-catch statements were block local, but that isn't the case? I can't access Error outside the try-catch statement so it shouldn't be a problem, should it?  

Cheers,
Adam


More information about the erlang-questions mailing list