better requires for exceptions