В следующем коде C ++ должно быть невозможным, чтобы произошло целочисленное деление на ноль:
// gradedUnits and totalGrades are both of type int
if (gradedUnits == 0) {
return 0;
} else {
return totalGrades/gradedUnits; //call stack points to this line
}
, однако Visual Studio выдает эту ошибку:
Unhandledисключение в 0x001712c0 в DSA_asgn1.exe: 0xC0000094: целочисленное деление на ноль.
И трассировка стека указывает на строку, указанную в коде.
ОБНОВЛЕНИЕ: Я могутолько что делал что-то глупое здесь.Пока я возился с попыткой заставить VS обратить внимание на мои точки прерывания отладки, я перестроил решение, и исключение больше не происходит.Мне кажется, что я остановился в середине сеанса отладки и возобновил его, когда подумал, что начинаю новые сеансы.
Спасибо за ответы.Было бы уместно здесь удалить мой вопрос, поскольку он решен, и на самом деле это не то, о чем я думал?
Кажется, что VS может просто сделать это с любым целочисленным делением, не проверяя делениепо нулю возможно.Нужно ли перехватывать это исключение, даже если код никогда не сможет его сгенерировать?Если так, каков наилучший способ сделать это?
Это для назначения, которое определяет VS 2005/2008 с C ++.Я бы предпочел не делать вещи более сложными, чем мне нужно, но в то же время я хотел бы делать вещи правильно, где это возможно.