How about we wrap all exceptions and rethrow? Something like: 

```
try {
    ...
} catch (Exception e) {
    logAuthenticationHandlerError(handlerName, credentials, e);
    throw new AuthenticationException(e);
} 
```

Would this cause a bug for the caller? I presume not, since they're catching `AuthenticationException` and the wrap would sufficiently initialize the new exception object to the full state of the thrown `e`? 

LOC aside, your approach is perfectly fine. I am just concerned that on the first look it's not exactly obvious why the two catch blocks...or maybe it's just me :)