In the example above, I think it is a good idea so you can control how your program shutdown. If you don't catch this error, other threads can continue to run incorrectly (The error is only thrown in one thread) It also give a exit code when a calling shell can check. I would use a different exit code for this error.
In general OOME is not guaranteed to be recoverable but doesn't guarantee your program will shut down either.