Forth
http://fforum.winglion.ru/

Расширение механизма обработки исключений
http://fforum.winglion.ru/viewtopic.php?f=34&t=1655
Страница 2 из 2

Автор:  mOleg [ Вт дек 16, 2008 18:56 ]
Заголовок сообщения: 

in4 писал(а):
mOleg писал(а):2) откладывать до определенного места (но зачем себе искать проблемы?)Более гибкий вариант. Дает возможность единообразно (и неизвестным заранее способом!) обработать несколько разных исключений.
Типа для консольных приложений один способ, для графических - другой...

ага и потенциальное место для непонятных багов (во всю ловлю в ядре СПФа: если хочется удовольствие получить - смотри в RECEIVE-WITH-XT )

in4 писал(а):
О! можно доп. параметры завертывать в доп. фрейм исключений (или делать дополнение существующего фрейма), снимаемый обработчиком!

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

Автор:  вопрос [ Вт дек 16, 2008 20:25 ]
Заголовок сообщения: 

тот, кто хочет отловить все исключения (даже когда падает система), видимо, должен воспользоваться идеей "параллельного стека" (упоминалась в теме о возможных улучшениях к форту) и вариант реализации предлагал Михаил
думаю, такая система могла бы сообщать зараннее, что предполагаемая операция некорректна

Автор:  Pretorian [ Вт дек 16, 2008 21:01 ]
Заголовок сообщения: 

Когда то баги ловил человек, а ныне "машино", далеко пошел прогресс.

Автор:  mOleg [ Ср дек 17, 2008 13:55 ]
Заголовок сообщения: 

вопрос писал(а):
тот, кто хочет отловить все исключения (даже когда падает система), видиом. должен воспользоваться идеей "параллельного стека" (упоминалась в теме о возможных улучшениях к форту) и вариант реализации предлагал Михаил
думаю, такая система могла бы сообщать зараннее, что предполагаемая операция некорректна

брр
да нет, достаточно изменить "ловитель" исключений. Сделать его более качественным.
с другой стортны, исключения и задумывались так, чтобы всегда завершать программу (только корректно).

Автор:  ygrek [ Сб дек 20, 2008 16:01 ]
Заголовок сообщения: 

mOleg писал(а):
ага и потенциальное место для непонятных багов (во всю ловлю в ядре СПФа: если хочется удовольствие получить - смотри в RECEIVE-WITH-XT )

Интересно -- что за непонятные баги?

Автор:  вопрос [ Сб дек 20, 2008 19:13 ]
Заголовок сообщения: 

mOleg писал(а):
вопрос писал(а):
тот, кто хочет отловить все исключения (даже когда падает система), видиом. должен воспользоваться идеей "параллельного стека" (упоминалась в теме о возможных улучшениях к форту) и вариант реализации предлагал Михаил
думаю, такая система могла бы сообщать зараннее, что предполагаемая операция некорректна

брр
да нет, достаточно изменить "ловитель" исключений. Сделать его более качественным.
с другой стортны, исключения и задумывались так, чтобы всегда завершать программу (только корректно).
Да, так проще, но всегда ли сложность - плохо.

Автор:  mOleg [ Сб дек 20, 2008 22:00 ]
Заголовок сообщения: 

ygrek писал(а):
Интересно -- что за непонятные баги?

о, мне очень понравилось, как в СПФ сделан INCLUDED
и еще нарвался на ошибку -1002 , которая не ошибка, а сообщение обработчику о конце потока.

кстати, композиция ['] @ CATCH в СПФ не работает
да, и еще в случае возникновения исключения течет память, подгребаемая INCLUDED под себя.

Автор:  ygrek [ Вс дек 21, 2008 12:57 ]
Заголовок сообщения: 

mOleg писал(а):
о, мне очень понравилось, как в СПФ сделан INCLUDED

Это баг?

mOleg писал(а):
и еще нарвался на ошибку -1002 , которая не ошибка, а сообщение обработчику о конце потока.

Подробнее. В каком случае вы на неё нарвались. Код.

mOleg писал(а):
кстати, композиция ['] @ CATCH в СПФ не работает

Работает. Опишите подробнее баг. Версия spf. Код.

mOleg писал(а):
да, и еще в случае возникновения исключения течет память, подгребаемая INCLUDED под себя.

Не течёт. Опишите подробнее. Код.

Автор:  mOleg [ Вс дек 21, 2008 20:57 ]
Заголовок сообщения: 

ygrek писал(а):
mOleg писал(а):кстати, композиция ['] @ CATCH в СПФ не работает
Работает. Опишите подробнее баг. Версия spf. Код.

на любой версии СПФ. (возможно оно будет работать в обработчике исключений? но в обычном случае нет)
<pre>
SP-FORTH - ANS FORTH 94 for Win95/98/Me/NT/2k/XP/Vista
Open source project at http://spf.sf.net
Russian FIG at http://www.forth.org.ru ; Started by A.Cherezov
Version 4.19 Build 004 at 21.Dec.2008
: tt ['] @ CATCH . ;
Ok
0 tt
EXCEPTION! CODE:C0000005 ADDRESS:005525E0 WORD:@
USER DATA: 00331E94 THREAD ID: 00000CD0 HANDLER: 0012EFCC
STACK: (1) 0012FFC8 8054B038 7FFDE000 00000000 00000000 7C816D4F [00000000]
RETURN STACK:
0012EFC8 : 0055516C CATCH
0012EFCC : 0012EFE8
0012EFD0 : 0012FFBC
0012EFD4 : 0056BCA3 tt
0012EFD8 : 00567C5B INTERPRET_
0012EFDC : 00567CE2 INTERPRET
0012EFE0 : 00567F09 MAIN1
0012EFE4 : 0055516C CATCH
0012EFE8 : 0012EFF8
0012EFEC : 0012FFC0
0012EFF0 : 00567F59 QUIT
0012EFF4 : 0055516C CATCH
0012EFF8 : 00000000
0012EFFC : 0012FFC0
0012F000 : 0056B00D ERR-EXIT
0012F004 : 0056BBF6 (INIT)
END OF EXCEPTION REPORT
-1073741819 Ok ( 0 )
</pre>

хотя 8) интересно получается. Работать-то оно работает, да обработчик исключения срабатывает и выдает сообщение, что не очень удобно. То есть таки это не баг, а фича, за которой не видно действия CATCH.

Автор:  mOleg [ Вс дек 21, 2008 21:03 ]
Заголовок сообщения: 

ygrek писал(а):
mOleg писал(а):и еще нарвался на ошибку -1002 , которая не ошибка, а сообщение обработчику о конце потока.
Подробнее. В каком случае вы на неё нарвались. Код.

это на самом деле не баг, но особенность (никак не задокументированная)
столкнулся, когда прикрутил messages к СПФу.

ygrek писал(а):
mOleg писал(а):да, и еще в случае возникновения исключения течет память, подгребаемая INCLUDED под себя.
Не течёт. Опишите подробнее. Код.

да, действительно, я не прав.

Автор:  ygrek [ Пн дек 22, 2008 01:31 ]
Заголовок сообщения: 

mOleg писал(а):
хотя интересно получается. Работать-то оно работает, да обработчик исключения срабатывает и выдает сообщение, что не очень удобно. То есть таки это не баг, а фича, за которой не видно действия CATCH.

Эта фича помогает баги ловить в программе. Игнорировать системные исключения -- ненормально.
http://spf.sf.net/docs/intro.ru.html#catch
mOleg писал(а):
это на самом деле не баг, но особенность (никак не задокументированная)
столкнулся, когда прикрутил messages к СПФу.

У вас есть прекрасный шанс задокументировать эту особенность (т.к. например я с этой особенностью никогда не сталкивался и вообще не понимаю о чём речь).

Автор:  chu [ Пт май 08, 2009 08:04 ]
Заголовок сообщения: 

mOleg писал(а):
(в реальности два уровня: уровень номеров портов и значений значимых команд, оба могут поддерживаться Фортом)



"(в реальности два уровня: уровень номеров портов и значений и уровень значимых команд, оба могут поддерживаться Фортом)" - так ближе к оригиналу.

Автор:  Victor__v [ Вс дек 25, 2016 11:57 ]
Заголовок сообщения:  Re: Расширение механизма обработки исключений

Хорошая идея
Но как реализовать совместимость с остальным без использования ранних наработок?
т.е. чтобы catch и catch( не были связаны между собою.
Надо подумать.
Хочется использовать и то и то, но чтобы они были независимы друг от друга

Автор:  Victor__v [ Ср сен 20, 2017 02:22 ]
Заголовок сообщения:  Re: Расширение механизма обработки исключений

Оставлю тут на размышления
откатные исключения
Основная идея - снятие забот о корректности данных в случае ошибки
Второстепенное - освобождение ресурсов.
Код:
: TEST \ addr u -- ??
['] THROW >R
BASE KEEP \ сохр. зн. переменной
['] EVALUATE CATCH


Этот код в случае ошибки корректно восстановит зн. переменной.
Можно расширить перехват исключений, заточив его под откатность
.
Цитата:
: CATCH:
R> SP@ CELL+ >R EXECUTE DUP IF R> SP! ELSE RDROP THEN
;

: ?THROW DUP IF RDROP ELSE DROP THEN ; \ err --
: CATCH; RDROP 0 ;



Страница 2 из 2 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/