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> хотя интересно получается. Работать-то оно работает, да обработчик исключения срабатывает и выдает сообщение, что не очень удобно. То есть таки это не баг, а фича, за которой не видно действия 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/ |