Thanks for the signal handling advice, but, yeah, I know it doesn't make any sense to exit 0 when ending the program due to an exception, that's why I posted, but you know what?! Now, I can't recreate it!?
This says that it was all probably an error in my usage/perception. I'll keep hunting for the situations in which I had thought I was getting exit values of 0 during an exception, but for the moment, I have tried 3 different situations, and none are now exiting with a value of 0! I'm glad I was mistaken, but I'm also now mystified.