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



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

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



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


--------------------
Напред! Живота е сраженье! Напред! И прав всегда ходи!
Напред, макар към поражение! Ако ще паднеш, прав падни!
---
Raw, and untamed in spirit, We chew this world and Spit it out
---
Challenge my own world to chaos
---
“I overcame myself, the sufferer; I carried my own ashes to the mountains; I invented a brighter flame for myself.”
PMEmail PosterUsers Website
Top
johnfound
Публикувано на: 25-08-2018, 20:46
Quote Post


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

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



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


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



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

Мнения: 2104
Регистриран на: 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
Име:
Група: Администратор
Ранг: Почетен член

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



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

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


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
johnfound
Публикувано на: 25-08-2018, 21:32
Quote Post


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

Мнения: 7025
Регистриран на: 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



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

Мнения: 2104
Регистриран на: 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



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

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



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

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


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

Мнения: 4198
Регистриран на: 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



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

Мнения: 3351
Регистриран на: 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
Име:
Група: Администратор
Ранг: Почетен член

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



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

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


--------------------
Копирай лесно ударено и - ѝ Ѝ
Замърсяване на въздуха в София - http://aqicn.org/city/bulgaria/sofia/druzhba/
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

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

 


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