Capture the exception in mkpath

eval() is not the same as eval{}.

Fixes #306.

Sorry about the whitespace cleanup, it's a hook I have in emacs. Just go to the `eval ` line.

No unit tests, as this doesn't follow the standard guidelines. I can add them in the next commit.