0으로 나누기 예외 처리
C의 정수에는 기본 예외 지원이 부족합니다. 따라서 제공된 코드 조각에서
int i = 0; cin >> i; // Input might be zero try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
입력이 0이면 예외가 발생하기보다는 정의되지 않은 동작이 발생합니다. 이러한 시나리오를 처리하려면 검사를 수행하고 명시적으로 예외를 발생시켜야 합니다.
다음 코드에서는 intDivEx 메서드를 사용하여 0으로 나누기 예외를 처리합니다.
#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; }
이 코드는 작업을 수행하기 전에 0으로 나누기를 확인합니다. 예외가 발생하면 오류 메시지를 인쇄합니다. 그렇지 않으면 실행을 계속합니다.
위 내용은 C에서 0으로 나누기 예외를 적절하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!