BG Development


Страници: (10) [1] 2 3 ... последна »  ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> c++ divide by zero
Gamma Goblin
Публикувано на: 25-08-2018, 20:31
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1681
Регистриран на: 21.02.18



Това не спира да ме човърка. Как мога да "хвана" деление на 0 ? В жава се хвърля изключение, но тук просто умира. Просто ми е интересно как да преведа хардуерната грешка към изкючение


--------------------
Бе наш този свят преди да дойде човекът и нямаше място за богове
Отново ще бъде, но само че нека човешкият род да ги прибере
Изсъхват морета рушат се скалите, луната завинаги да свети ще спре
Ще паднее Господ Бог от звездите и всичко що диша в този ден ще умре
Тогава земята ще стане на пепел, свидетели ще бъдат само пясък и жар
И никой не ще помни дали нявга е светил ликът на отреченият бивш господар
PMEmail PosterUsers Website
Top
johnfound
Публикувано на: 25-08-2018, 20:46
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7136
Регистриран на: 27.05.04



Ами пак с изключение. Доколкото знам в Ц++ трябва да има try/нещо си...


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
saruman
Публикувано на: 25-08-2018, 20:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2127
Регистриран на: 21.07.10



Undefined behaviour ,трябва да си провериш знаменателя преди операцията

Това мнение е било редактирано от saruman на 25-08-2018, 20:55


--------------------
http://www.wefunkradio.com/radio/

Remember,remember the fifth of November
PMEmail Poster
Top
SuN
Публикувано на: 25-08-2018, 21:08
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 7622
Регистриран на: 27.01.05



QUOTE
Просто ми е интересно как да преведа хардуерната грешка към изкючение

Даже не съм се замислял да подавам грешни аргументи на някоя функция (в лисп делението е функция).


--------------------
Копирай лесно ударено и - ѝ Ѝ (а́ е́ и́ о́ у́)
PMEmail Poster
Top
johnfound
Публикувано на: 25-08-2018, 21:32
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 7136
Регистриран на: 27.05.04



QUOTE (saruman @ 25-08-2018, 21:54)
Undefined behaviour ,трябва да си провериш знаменателя преди операцията

Това че е undefined не означава, че не можеш да го ловиш с try/catch, вместо да проверяваш всеки път стойностите. Или try/catch не е в стандарта на C++? Нещо се съмнявам.


--------------------
asm32 - Приложно програмиране на асемблер.
Tox: 2B446ADCEC7E180CD4C59391D81D4CAB3E99CA7AE767DB3AB45AF976F8A2050FF071DDB733F1
PMEmail PosterUsers Website
Top
saruman
Публикувано на: 25-08-2018, 21:54
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2127
Регистриран на: 21.07.10



QUOTE (johnfound @ 25-08-2018, 21:32)
QUOTE (saruman @ 25-08-2018, 21:54)
Undefined behaviour  ,трябва да си провериш знаменателя преди операцията

Това че е undefined не означава, че не можеш да го ловиш с try/catch, вместо да проверяваш всеки път стойностите. Или try/catch не е в стандарта на C++? Нещо се съмнявам.

Можеш и с изцепшън естествено,но лично според мен няма смисъл


--------------------
http://www.wefunkradio.com/radio/

Remember,remember the fifth of November
PMEmail Poster
Top
AK-85
Публикувано на: 25-08-2018, 21:59
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 779
Регистриран на: 06.07.06



QUOTE (Gamma Goblin @ 25-08-2018, 19:31)
В жава се хвърля изключение, но тук просто умира.

Какво ще рече "просто умира"?
PM
Top
dvader
Публикувано на: 25-08-2018, 22:00
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4245
Регистриран на: 12.07.05



QUOTE (johnfound @ 25-08-2018, 21:32)
Това че е undefined не означава, че не можеш да го ловиш с try/catch,

Точно това означава.
Undefined означава, че може да ти форматира диска.
Това, че на някаква отделно взета платформа се вдигна exception не означава, че навсякъде и винаги е така.

Разбира се ако пишеш за точно тази платформа и този компилатор нямаш проблеми да си го хванеш с try/catch...


--------------------
I find your lack of faith disturbing
PM
Top
gat3way
Публикувано на: 25-08-2018, 23:13
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3452
Регистриран на: 22.06.12



Въпреки че не разбирам от C++ имам силни основания да вярвам че няма как да се реализира ексепшън за делене на нула там. И не само за това, за достъпване на NULL указател примерно също нe виждам как би могло да се реализира. В момента в който това стане, операционната система ще го прекъсне и ще му засили там сигнала, SIGFPE за деленето на нула или SIGSEGV за невалидната памет. Сега то не пречи да се прихванат тези сигнали и да се прави longjmp оттам както си се реализират ексепшъните. Ама това ще сътвори такава огромна боза че не мисля че големите глави дето го измислят ц++-а изобщо това биха го разгледали като вариант.

Това мнение е било редактирано от gat3way на 25-08-2018, 23:14
PMEmail Poster
Top
SuN
Публикувано на: 25-08-2018, 23:14
Quote Post


Group Icon
Име:
Група: Администратор
Ранг: Почетен член

Мнения: 7622
Регистриран на: 27.01.05



QUOTE (saruman @ 25-08-2018, 20:54)
Undefined behaviour ,трябва да си провериш знаменателя преди операцията

Тоя спор много сме го водели с един колега преди години. Поради някаква причина той държеше на изчистено АПИ, което прави това, което трябва, ако го ползваш правилно. Мина време и накрая се убеди, че на другите не им пука толкова, че да помнят как трябва да се ползва правилно и спестява време на фирмата, ако поне в дебъг версиите си проверяваш аргументите. icon_smile.gif


--------------------
Копирай лесно ударено и - ѝ Ѝ (а́ е́ и́ о́ у́)
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (10) [1] 2 3 ... последна » Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0