0으로 나누기 예외 잡기
C에서 0으로 나누려고 할 때 컴파일러나 런타임에서 자동으로 예외가 발생하지 않습니다. . 동작이 정의되지 않았습니다. 즉, 예외나 기타 예측할 수 없는 결과가 발생할 수 있습니다.
제공된 코드 조각에서:
int i = 0; cin >> i; try { i = 5/i; } catch (std::logic_error e) { cerr << e.what(); }
코드는 분할을 시도할 때 어떤 예외도 포착하지 않습니다. 0으로 나누는 정수는 표준 C에서 예외로 간주되지 않기 때문에 0으로 나눕니다.
이를 처리하려면 0으로 나누기 조건을 수동으로 확인해야 합니다. 그에 따라 예외를 발생시킵니다. C 표준은 0으로 나누기에 대한 예외를 명시적으로 정의하지 않으므로 다음과 같은 예외를 발생하도록 선택할 수 있습니다.
다음은 0으로 나누기 예외 발생을 보여 주는 수정된 코드 조각입니다.
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 함수는 0으로 나누기를 확인하고 발견되면 std::overflow_error 예외를 발생시킵니다. 이를 통해 코드에서 예외를 처리할 수 있습니다.
위 내용은 C에서 0으로 나누기 오류를 올바르게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!