170 похожих чатов

Ребят, как обработать исключения в сложной математической формуле?

30 ответов

4 просмотра

Какое исключение?

Roman-Zverev Автор вопроса
Kirill Bolshakov
Какое исключение?

Наверно все исключения.

Roman Zverev
Наверно все исключения.

В С++ для этого есть try catch

Roman Zverev
Наверно все исключения.

откуда в математической формуле исключения?

Алиса Кассель-Королёва
откуда в математической формуле исключения?

Окей. Допустим в формуле нужно считать sqrt и в зависимости от входных данных туда может прилететь отрицательное число. Нужно ли в таком случае исключение?

🐈
Окей. Допустим в формуле нужно считать sqrt и в за...

в математической формуле под корнем в принципе не может быть отрицательного числа

Алиса Кассель-Королёва
в математической формуле под корнем в принципе не ...

я подозреваю что вопрос не про формулу на бумаге а про реализацию этой формулы в виде кода

Алиса Кассель-Королёва
в математической формуле под корнем в принципе не ...

если есть функция, например, f(x) = sqrt(-x), она определена только на множестве неположительных вещественных чисел.

🐈
я подозреваю что вопрос не про формулу на бумаге а...

так при реализации рассматривать другие случаи просто нет смысла

Алиса Кассель-Королёва
так при реализации рассматривать другие случаи про...

То есть вы всегда рассматриваете только случаи, в которых вам приходят только правильные данные, считая что они не могут быть неправильными?

Алиса Кассель-Королёва
ну да

проверка значений лежит на пользователе

Алиса Кассель-Королёва
проверка значений лежит на пользователе

Я не знаю что вам на это сказать.... Нельзя доверять пользователю

Алиса Кассель-Королёва
я не про конечного пользователя

я про пользователя библиотеки, который должен в документации к ней прочитать, например, что числа больше нуля передавать нет смысла

Алиса Кассель-Королёва
я не про конечного пользователя

Ему тоже. без обработки граничных значений вы будете вылетать с забавными исключениями

🐈
Ему тоже. без обработки граничных значений вы буде...

если значение посчитать невозможно, то выброс исключения - самый правильный вариант

Не должно быть там исключений, так что надо все ловить через IF .

Алиса Кассель-Королёва
если значение посчитать невозможно, то выброс искл...

То есть пользователь некой сложномудреной функции должен написать её аналог для проверки "подойдут ли значения"?

Алиса Кассель-Королёва
если значение посчитать невозможно, то выброс искл...

Сначала лучше (по моему мнению ) проверять на правильность данных, если они неправильны , то функция- проверяльщик возвращает false. А в функцию корня пускать только если функция-проверяльщик вернула true. А что касается исключений, то имхо, они как раз и нужны, что если вдруг ты все предусмотрел , по идее все должно идти норм, и тут мы видим вероятность, что ВДРУГ что то пойдёт не так- тогда мы этот участок кода оборачиваем в try catch . То есть исключения следует использовать не как проверяльщик значений перед использованием в коде функции, а как средство для подстраховки и перехвата хода программы , если ВДРУГ всё-таки несмотря на все наши меры предосторожности, что то пошло не так (как вариант кончилась память резко во время вычисления внутри функции)

🐈
То есть пользователь некой сложномудреной функции ...

Что мешает проверить на overflow вместо всего вот этого?

🐈
То есть пользователь некой сложномудреной функции ...

Нет ты же просто проверяешь допустим условие что значение не отрицательно и всё

Алиса Кассель-Королёва
аналог-то зачем? обычно проверки проще

Хорошо. Допустим, у вас на входе значения с 20 каких-то датчиков

🐈
Ему тоже. без обработки граничных значений вы буде...

А какие там будут забавыне исключения кроме overflow?

Похожие вопросы

Обсуждают сегодня

Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
А чем вам питонисты не угодили?😂
.
79
Всем привет. Поделитесь, пожалуйста, опытом. Есть форма, на которой имеется dbgrid и кнопки: добавить, редактировать, удалить. Если нет записей в dbgrid, то кнопки редактирова...
Евгений
4
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
83
Вот смотрите у меня есть два стрима сейчас fs, cs: TStream; fs := TFileStream.Create('filename'); cs := TCompressionStream.Create(compression_level, fs); Я хочу сделать так: ...
notme
5
type TExtensions<GExtender>=class function GetExtension<GEntityExtenderType>:GEntityExtenderType; end; function TExtensions<GExtender>.GetExtension<GEntityExtenderType...
zamtmn
8
Всем здравствуйте! Я хотел узнать сколько стоит средняя месячная зарплата у Electron js разработчиков? Мне очень это важно и нужно, плиз помогите узнать эту инфу! Для Джунио...
U.K.
10
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
Карта сайта