たとえば int a=non_42(); したあと宇宙線が飛んできて a が謎の値 42 になることだって実際に現実に起きうるエラーですが、基本的に皆そういうの検査しないわけですよ。1行ごとに a の値が non_42() を読んだときの値のままであることを確認しない。
そもそも a が 42 になってたからといって、元の値なんて復元できないじゃないですか。
そういう「まずありえないし、あったとしても救いようがない」状況を (自覚的であれ無自覚であれ) プログラマは必ず捨てているもので、じゃあもしその「ありえない」を見てしまって発狂したとき何をするか、という最後の砦が assert や abort なんですよ