trycatch doesn't get rethrown errors, handle them explicitly