After implementing it, I thought again: the reason for the `try`/`except` is that the complex case is only needed for the corner case of `u.mag**0.5` (it really belongs in #1628; will move it there). So, my goal is to ensure this impacts the normal cases as little as possible; changing it to `hasattr` increases the time for `is_effectively_unity` from 261 to 433 ns).  In contrast, for `sanitize_scale`, the `hasattr` is the fastest, since otherwise one is attempting a calculation that usually is meaningless.  (I'll add some comments to ensure this is clear in the code)