use ex-info for exceptions