捕獲被零除異常
當嘗試在C 中除以零時,編譯器或運行時不會自動拋出異常。該行為未定義,這意味著它可能會導致異常或其他不可預測的結果。
在提供的程式碼片段中:
int i = 0; cin >> i; try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
嘗試除法時程式碼不會捕捉任何異常除以零,因為在標準 C 中整數除以零不被視為異常。
要處理此問題,您需要手動檢查除以零的條件並相應地拋出異常。 C 標準沒有明確定義除零的異常,因此您可以選擇拋出異常,例如:
這是一個修改後的程式碼片段,示範拋出被零除異常:
int intDivEx(int numerator, int denominator) { if (denominator == 0) throw std::overflow_error("Divide by zero exception"); return numerator / denominator; } try { i = intDivEx(5, 0); // Will throw an overflow_error exception } catch (std::overflow_error &e) { cerr << e.what() << endl; }
在此例如,intDivEx 函數檢查是否被零除,如果遇到則拋出std::overflow_error 異常。這允許您處理程式碼中的異常。
以上是如何正確處理 C 中的被零除錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!