AFAICR, whenever I eval{...} my only interests are whether $@ has been set and, if so, the contents of $@.
I therefore merely run the eval, then examine the contents of $@.
I guess that if I needed to find out something else, then I'd do something else :-)