Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср мар 27, 2024 08:57

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Расширение механизма обработки исключений
Автор Сообщение
  Заголовок сообщения:  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 ;


Сообщение Добавлено: Ср сен 20, 2017 02:22
  Заголовок сообщения:  Re: Расширение механизма обработки исключений  Ответить с цитатой
Хорошая идея
Но как реализовать совместимость с остальным без использования ранних наработок?
т.е. чтобы catch и catch( не были связаны между собою.
Надо подумать.
Хочется использовать и то и то, но чтобы они были независимы друг от друга
Сообщение Добавлено: Вс дек 25, 2016 11:57
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
(в реальности два уровня: уровень номеров портов и значений значимых команд, оба могут поддерживаться Фортом)



"(в реальности два уровня: уровень номеров портов и значений и уровень значимых команд, оба могут поддерживаться Фортом)" - так ближе к оригиналу.
Сообщение Добавлено: Пт май 08, 2009 08:04
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
хотя интересно получается. Работать-то оно работает, да обработчик исключения срабатывает и выдает сообщение, что не очень удобно. То есть таки это не баг, а фича, за которой не видно действия CATCH.

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

У вас есть прекрасный шанс задокументировать эту особенность (т.к. например я с этой особенностью никогда не сталкивался и вообще не понимаю о чём речь).
Сообщение Добавлено: Пн дек 22, 2008 01:31
  Заголовок сообщения:   Ответить с цитатой
ygrek писал(а):
mOleg писал(а):и еще нарвался на ошибку -1002 , которая не ошибка, а сообщение обработчику о конце потока.
Подробнее. В каком случае вы на неё нарвались. Код.

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

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

да, действительно, я не прав.
Сообщение Добавлено: Вс дек 21, 2008 21:03
  Заголовок сообщения:   Ответить с цитатой
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.
Сообщение Добавлено: Вс дек 21, 2008 20:57
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
о, мне очень понравилось, как в СПФ сделан INCLUDED

Это баг?

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

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

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

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

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

Не течёт. Опишите подробнее. Код.
Сообщение Добавлено: Вс дек 21, 2008 12:57
  Заголовок сообщения:   Ответить с цитатой
ygrek писал(а):
Интересно -- что за непонятные баги?

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

кстати, композиция ['] @ CATCH в СПФ не работает
да, и еще в случае возникновения исключения течет память, подгребаемая INCLUDED под себя.
Сообщение Добавлено: Сб дек 20, 2008 22:00
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
вопрос писал(а):
тот, кто хочет отловить все исключения (даже когда падает система), видиом. должен воспользоваться идеей "параллельного стека" (упоминалась в теме о возможных улучшениях к форту) и вариант реализации предлагал Михаил
думаю, такая система могла бы сообщать зараннее, что предполагаемая операция некорректна

брр
да нет, достаточно изменить "ловитель" исключений. Сделать его более качественным.
с другой стортны, исключения и задумывались так, чтобы всегда завершать программу (только корректно).
Да, так проще, но всегда ли сложность - плохо.
Сообщение Добавлено: Сб дек 20, 2008 19:13
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
ага и потенциальное место для непонятных багов (во всю ловлю в ядре СПФа: если хочется удовольствие получить - смотри в RECEIVE-WITH-XT )

Интересно -- что за непонятные баги?
Сообщение Добавлено: Сб дек 20, 2008 16:01
  Заголовок сообщения:   Ответить с цитатой
вопрос писал(а):
тот, кто хочет отловить все исключения (даже когда падает система), видиом. должен воспользоваться идеей "параллельного стека" (упоминалась в теме о возможных улучшениях к форту) и вариант реализации предлагал Михаил
думаю, такая система могла бы сообщать зараннее, что предполагаемая операция некорректна

брр
да нет, достаточно изменить "ловитель" исключений. Сделать его более качественным.
с другой стортны, исключения и задумывались так, чтобы всегда завершать программу (только корректно).
Сообщение Добавлено: Ср дек 17, 2008 13:55
  Заголовок сообщения:   Ответить с цитатой
Когда то баги ловил человек, а ныне "машино", далеко пошел прогресс.
Сообщение Добавлено: Вт дек 16, 2008 21:01
  Заголовок сообщения:   Ответить с цитатой
тот, кто хочет отловить все исключения (даже когда падает система), видимо, должен воспользоваться идеей "параллельного стека" (упоминалась в теме о возможных улучшениях к форту) и вариант реализации предлагал Михаил
думаю, такая система могла бы сообщать зараннее, что предполагаемая операция некорректна
Сообщение Добавлено: Вт дек 16, 2008 20:25
  Заголовок сообщения:   Ответить с цитатой
in4 писал(а):
mOleg писал(а):2) откладывать до определенного места (но зачем себе искать проблемы?)Более гибкий вариант. Дает возможность единообразно (и неизвестным заранее способом!) обработать несколько разных исключений.
Типа для консольных приложений один способ, для графических - другой...

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

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

и тоже потом ловить баги.
вообще мне кажется, что значительно лучше выводить сообщения сразу, не откладывая.
Сообщение Добавлено: Вт дек 16, 2008 18:56
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
2) откладывать до определенного места (но зачем себе искать проблемы?)
Более гибкий вариант. Дает возможность единообразно (и неизвестным заранее способом!) обработать несколько разных исключений.
Типа для консольных приложений один способ, для графических - другой...

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

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB