Your first method is the best. Or you can make a slightly more beautiful change with Try or Try :: Tiny , which both work to reduce the verbosity of your second method.
The main reason to avoid your second and third methods has less to do with the verbosity of your code (which, I admit, is annoying in the first method), and is more dependent on the readability of your code.
If you end up expanding every class that you import, your code will be almost completely unreadable to someone else or worse: it will seem readable ("Oh, I know how MIME :: Parse!" Works), but not will do what was expected ("Hmm, why doesn't MIME :: Parse fail with this bad input?")
The second method has essentially the same problem, but at least it does not claim to not handle errors. But it still makes debugging a lot harder.
I know that re-entering the same error handling code is often annoying (I do this all the time!), But this is best practice.
source share