better tryCatch, valid errors thrown and support for multiple return values