make `e` final; be more specific about exceptions you catch and throw