處理除零異常
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中文網其他相關文章!