I once read somebody suggest that an exception or other method of crashing is appropriate for conditions where There is no way I can sensibly recover from this", and additionally an assert is appropriate for conditions where This should never happen, ever.