In bash you clean up in the exit handler:
trap mycleanupfunc EXIT trap mycleanupfunc EXITP.S. No, temporarily disabling the option is not a solution, it's another workaround for the problem created out of nothing.
I'm not sure what scenario you're imagining with your other concern. This does what you would expect:
set -o errexit
if [ -f somefile ]
then
echo "File exists."
else
echo "File does not exist."
fi