Test::Exception is very useful, but can be quite a bit more complicated than is clear. It uses Sub::Uplevel to hide its own place in the call stack, which is almost never necessary for testing, and can have bizarre side effects and interactions with "caller."
I suggest considering Test::Fatal, which has a much simpler API and implementation.
A "Must" module if you use die or carp in your code. This test module will be of great help, no more playing with eval.
I only wished 4 of the 6 provided functions would be removed from the API. lives_ok, IMHO, makes little sense and dies_ok is plain wrong. it's
easy to make a mistake and have a test pass a dies_ok while the real error is not the one documented in the message. I'd recommend to _not_ use dies_ok but to only use the superior throws_ok.
A wonderful addition to the Test::* collection. It can be tough to test failure, and without a module like Test::Exception, I might be tempted to not bother testing those failures. Test::Exception makes a breeze.