I see what you are doing now, and no I don’t believe you can make that work.
Catch is for unexpected error conditions, and a failed login is an expected condition, just an unauthorized response.
What you can do, is do a single query of the user, before the login action and just lookup a user with conditions for username and password set. If you get a user, then do login action, if not, send mail.