As is often the case, my position on this question contradicts conventional thinking.
In general, I ignore out-of-disk-space the same way I ignore out-of-memory. Partly because it's impossible to reliably predict these conditions. Partly because when we're talking about the behavior of software in unexpected conditions (like a bug you don't know you have which causes you to eat all disk or memory), it's impossible to reason well enough about the situation to code for it AND TEST IT. (It's safe to assume that if you have code that isn't tested, it doesn't work).
However, there are specific conditions that indicate a different approach:
If you're holding important, unsaved, user state (like a text file with some edits), consider pre-saving the data in the background, so that a crash is recoverable later.
If you're about to write to disk based on an interactive user's command (e.g. File->Save), you can catch a failure and offer to let them try again.
In either cases, it's important that bugs look like bugs. Crashing bugs should crash. Catching unexpected exceptions and continuing quietly robs you of diagnostic opportunities while leaving your software in an unsafe state.