ゼロ除算例外の処理
C の整数にはネイティブ例外サポートがありません。したがって、提供されているコード スニペットでは、
int i = 0; cin >> i; // Input might be zero try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
入力がゼロの場合、例外がトリガーされるのではなく、未定義の動作が発生します。このようなシナリオを処理するには、チェックを実行して例外を明示的にスローする必要があります。
次のコードでは、intDivEx メソッドを使用してゼロ除算の例外を処理します。
#include <iostream> #include <stdexcept> inline int intDivEx(int numerator, int denominator) { if (denominator == 0) throw std::overflow_error("Divide by zero exception"); return numerator / denominator; } int main() { int i = 42; try { i = intDivEx(10, 0); } catch (std::overflow_error &e) { std::cout << e.what() << " -> "; } std::cout << i << std::endl; try { i = intDivEx(10, 2); } catch (std::overflow_error &e) { std::cout << e.what() << " -> "; } std::cout << i << std::endl; return 0; }
このコード演算を実行する前にゼロ除算をチェックします。例外が発生した場合は、エラー メッセージが出力されます。それ以外の場合は、実行を継続します。
以上がC でゼロ除算例外を適切に処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。