|
Исключение при делении на 0
|
|||
---|---|---|---|
#18+
Почему фокс не генерит исключение при делении на 0, а только пишет кучу звездочек в переменную? TRY-CATCH-ем исключение не ловится. И даже не понятно как программно определить что там было деление на 0 и в переменной звездочки(так выглядит содержимое переменной в дебагере) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2011, 07:27 |
|
Исключение при делении на 0
|
|||
---|---|---|---|
#18+
Ошибка будет если попытаться сохранить в таблицу это значение. Определять надо заранее, перед делением проверяй что знаменатель не равен нулю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2011, 07:52 |
|
Исключение при делении на 0
|
|||
---|---|---|---|
#18+
Это понятно. Просто тут распарсиваются значения, которые собираются в строку, которая выполняется макроподстановкой. И при проверке каждого значения на 0, задача усложняется в разы. Проблемму решил конвертацией получившегося значения в строку, и проверкой первого символа на равность '*'(звездочке), но это же такие кастыли блин. А почему фокс не генерит исключений, при делении на 0? Я не знаю ни одного языка, который бы не генерил исключение, при делении на 0. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2011, 08:57 |
|
Исключение при делении на 0
|
|||
---|---|---|---|
#18+
SitrА почему фокс не генерит исключений, при делении на 0? ХЗ, так разработчики фокса решили, всегда так было. Звездочки означают переполнение, которое возникает не только при делении на ноль, но и при попытке записать число в поле, в которое оно не влазит. Например: Код: plaintext
Считай звездочки одним из возможных значений и проверяй сравнив с ним же: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2011, 09:14 |
|
Исключение при делении на 0
|
|||
---|---|---|---|
#18+
SitrПроблемму решил конвертацией получившегося значения в строку, и проверкой первого символа на равность '*'(звездочке) Проще вычитанием: если число-число не равно нулю, значит переполнение ... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2011, 09:43 |
|
Исключение при делении на 0
|
|||
---|---|---|---|
#18+
Можно попробовать использовать функции, деление на ноль в которых генерит ошибку. Например MOD(). А вызов этой функции "обернуть" в evl() Код: plaintext 1. 2. 3. 4.
В принципе, можно просто переопределять переменную через эту функцию Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
05.08.2011, 10:10 |
|
|
start [/forum/topic.php?fid=41&msg=37381660&tid=1584239]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 152ms |
0 / 0 |