The documentation for the DoesUserHavePermissions method starts hopeful:
"The DoesUserHavePermissions method of the SPPermissionCollection class returns a value that indicates whether the current user has the specified permissions."
But it goes downhill in the "return value" section:
"true if the current user has the specified permissions; otherwise, raises an access denied exception and prompts the user for authentication."
It is not exceptional for a user to not have permissions, so raising an exception in those cases is not something you would expect to happen; especially since the method returns a boolean, which does support the false value.
A general design guideline for .Net development as described in the Framework design guidelines (p183-188) is: "DO NOT use exceptions for the normal flow of control, if possible."