Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 30.11.2010
Сообщений: 22

Программа не перехватывает исключение "Деления на нуль"

14.01.2011, 16:44. Показов 1934. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Работаю с перехватчиками исключений. Написал простенькую программу и по ней возник вопрос. Буду очень признателен если поможете разобраться.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 static void Main(string[] args)
        {
            int[] massive1 = { 4, 2, 6, 7, 12, 15, 92, 34 };
            int[] massive2 = { 3, 0, 12, 3, 45, 0 };
 
            for (int i = 0; i < massive1.Length; i++)
            {
                try
                {
                    Console.WriteLine(massive1[i] + "/" + massive2[i] + "равно" + "  " + massive1[i] / massive2[i]);
                }
                catch (DivideByZeroException)
                {
                    Console.WriteLine("Произошло деление на 0");
                }
                catch (IndexOutOfRangeException)
                {
                    Console.WriteLine("Индекс превзошел величину массива");
                }
            }
 
            Console.ReadLine();
           
 
        }
Результат действия этой программы таков:

4/3равно 1
Произошло деление на 0
6/12равно 0
7/3равно 2
12/45равно 0
Произошло деление на 0
Индекс превзошел величину массива
Индекс превзошел величину массива


Далее, если вместо частного (типа int) massive1[i] / massive2[i] поставить частное типа double 1.0*massive1[i] / massive2[i], то результат программы будет уже таков:

4/3равно 1,33333333333333
2/0равно бесконечность
6/12равно 0,5
7/3равно 2,33333333333333
12/45равно 0,266666666666667
15/0равно бесконечность
Индекс превзошел величину массива
Индекс превзошел величину массива


То есть во втором случае программа не перехватывает исключение "Деления на нуль". А почему так происходит?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2011, 16:44
Ответы с готовыми решениями:

Исключения. Добавить исключение для деления на нуль
Подскажите, пожалуйста, как исправить программу, чтобы срабатывало исключение для деления на нуль? using System; class...

Попытка деления на нуль
&quot;Попытка деления на нуль&quot;. И всё вроде бы ясно, вот только как сохранить формулу и при этом избежать ошибки?:scratch: for (int j = 0; j...

Проверка деления на нуль
Как проверить в этом коде условие?? Так чтоб было сообщения деления на нуль?? #include&lt;iostream&gt; #include&lt;stdio.h&gt;...

3
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
14.01.2011, 17:02
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Потому что для типа double допустима операция деления на нуль, и в результате получиться бесконечность, т.е. 10.0 / 0.0 == +infinity; -10.0 / 0.0 == -infinity; 0.0 / 0.0 = NaN
1
 Аватар для usernet009
26 / 26 / 5
Регистрация: 28.12.2009
Сообщений: 85
14.01.2011, 17:07
Потому, что в типах Double и float есть деление на нуль и оно возвращает +бесконечность или -бесконечность.
Если учил высшую математику, то должен понимать, почему так происходит но, если не понимаешь, расскажу вкратце.
Представь, что 0 это не 0 а просто очень очень очень маленькое число. Не 0.1 и не 0.00000001 а еще намного меньше. Такое число называется бесконечно малым числом.
Дальше : 10/1 = 10
10/0,5 = 10
10/0,0001 = 10000
Следовательно, если разделить ЛЮБОЕ число на бесконечно малое число то получится бесконечно большое число.
1
0 / 0 / 0
Регистрация: 30.11.2010
Сообщений: 22
14.01.2011, 17:14  [ТС]
Спасибо. Понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.01.2011, 17:14
Помогаю со студенческими работами здесь

Проверка деления на нуль
Написал программу, но не до конца нужно сделать проверку деления на нуль #include &lt;QCoreApplication&gt; #include &lt;iostream&gt; ...

Вывод об ошибке деления на нуль
Как сделать так чтобы выводилось сообщение в правой области экрана при делении на нуль. uses FormsABC; function...

Бесконечность и попытка деления на нуль
Если оба числа целочисленные, то при делении на нуль выходит &quot;попытка деления на нуль&quot;. А если хотя бы один из членов - число с...

Обработать исключительную ситуацию деления на нуль
Помогите написать программу с обработкой исключительной ситуации деления на нуль, пожалуйста. Вот тут что то есть, или это не то? Я что то...

Как отловить SIMD исключение (деление на нуль)
Пробовал так, но не ловит #include &lt;stdafx.h&gt; //------------------------------------------------------------------------------ ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru