The trouble with your eval here is that it doesn't check to see what the problem was. It could be something totally unrelated to the error that Apache::Session throws, like a full disk or bad file permissions or any number of other things. You can check to see if what's you think it is with something like this:
if ($@ =~ m#^Object does not exist in the data store#)