0 で除算すると、ほとんどの CPU は、その CPU メーカーの専門用語で例外、シグナル、割り込み、トラップなどと呼ばれる何らかのエスカレーション手順に従います。これらのどれも、「例外」という用語が使用されていても、C++ 言語の例外と直接関係はありません。
C++ では、ゼロ除算を繰り返しテストするのは一般に CPU サイクルとオブジェクト コードのサイズにコストがかかるため、組み込み型のコンパイラ生成コードはそのようなチェックを行う必要はありません。実際には、通常、プログラマーがゼロ除算を回避するようにコーディングし、除算が有用な部分のサブセットに明示的なチェックを挿入することを信頼するだけで十分です。冗長性を避けるために、そのようなチェックを因数分解します。
プログラマーが一貫性のある保証されたチェックを必要とする場合、組み込みの数値型の代わりに使用できるユーザー定義型 (カスタムのオーバーロードされた演算子を持つクラス) を作成できますが、ゼロ除算 (またはアンダーフロー、オーバーフローまたは開発者が持つその他の懸念事項) と、プログラマーが好きなように反応します。JAVA や C# などの言語には演算子のオーバーロードがないことがわかります。これは、直感的な数学演算子を使用する代わりに、関数を明示的に呼び出すために侵襲的なコード変更が必要なため、この方法で組み込み型を簡単に置き換えることができないことを意味すると思います。
とにかく、C++ 標準自体はゼロ除算の状況での動作を指定していないため、実装は、必要に応じて潜在的に有用な動作を自由に提供できます。これには、実際の C++ 言語の例外を何らかの方法で生成することが含まれる可能性がありますが、実際には、正当化するには CPU サイクルとコード サイズが高すぎる可能性があります。おそらく、JAVA は非常に遅くて肥大化しているため、このような少し余分なチェックはここにもそこにもありません...? ;-)
x86 ファミリーの CPU を使用しているとします。0 による除算通知の用語は「割り込み」です。ただし、そのマシンで UNIX や Linux などを実行している場合、分割はオペレーティング システム レベルでの「シグナル」となり、シグナル ハンドラを設定して問題の通知を受け取ることができます。