A2 & Oberon » Программирование » ActiveOberon » Секция FINALLY

Страниц (1): [1]
 

1. BohdanT - 04 Ноября, 2008 - 19:09:30 - перейти к сообщению
Оказвается есть такая штука! Ну описаний ни где нету... но вот пример:
		PROCEDURE SafelyDoOperation(test:LONGINT) : BOOLEAN;
VAR trap, opened : BOOLEAN; res : LONGINT; temp: ARRAY 256 OF CHAR;
BEGIN
trap:=FALSE;
test:=test DIV test;
FINALLY
IF trap THEN KernelLog.String("TRAP");KernelLog.Ln END;
RETURN ~trap;
(* trap will be set in case a trap occurs in the block above *)
END SafelyDoOperation;

Переменная trap=TRUE когда произошел трап. Вот такая загогулина, понимаиш...
2. BohdanT - 07 Ноября, 2008 - 17:21:10 - перейти к сообщению
Нашел где появляется переменная trap.
Модуль Traps содержит следующую проце-дурку:
PROCEDURE SetTrapVariable(pc, fp: SYSTEM.ADDRESS);
VAR
varadr: SYSTEM.ADDRESS;
BEGIN
varadr := GetVariableAdr(pc, fp, "trap");
IF varadr # -1 THEN
SYSTEM.PUT8(varadr, 1)
END
END SetTrapVariable;
3. Wlad - 19 Декабря, 2008 - 22:58:03 - перейти к сообщению
BohdanT пишет:
Переменная trap=TRUE когда произошел трап

ШИКАРНАЯ вещь!

ЗЫ Когда ж они отладчик-то приторочат-таки? Улыбка
4. BohdanT - 21 Декабря, 2008 - 11:21:01 - перейти к сообщению
Wlad пишет:
BohdanT пишет:
Переменная trap=TRUE когда произошел трап

ШИКАРНАЯ вещь!

Мне понравилось как это реализовано. Ведь это сделано не на уровне компилятора, а на уровне библиотеки Подмигивание

Wlad пишет:
ЗЫ Когда ж они отладчик-то приторочат-таки? Улыбка


Скорее всего никогда. Недавно нарвался на такую ошибку, что отладчик бы не помешал Недовольство, огорчение
И делать его не сложно, но времени сейчас нет абсолютно
5. Wlad - 22 Декабря, 2008 - 00:59:27 - перейти к сообщению
BohdanT пишет:
сделано не на уровне компилятора, а на уровне библиотеки

Скорее ни то, ни - другое.Это - рефлекшн какой-то...
Точнее - его правильное и красивое применение...
6. BohdanT - 22 Декабря, 2008 - 09:06:16 - перейти к сообщению
Да рефлекшен, а это разве не уровень библиотеки?
http://a2os.org.ua/forums/topic....71270#1226071270
7. Wlad - 22 Декабря, 2008 - 21:59:39 - перейти к сообщению
BohdanT пишет:
Да рефлекшен, а это разве не уровень библиотеки?
Сначала хотел категорично: "ну конечно же - нет!"...
Потом решил спокойнее: "Ну, конечно же - нет."
Радость
Дело в том, что "рефлекшн", он может ВЫРАЖАТЬСЯ теми или иными (что авторы реализовали) средствами конкретной библиотеки, но это это - НЕ часть библиотеки. По сути своей оно, как бы, и является одновременно "побочным продуктом" компилятора (в тех частях, что непосредственно НЕ часть интеллисенса... ( Улыбка )...
По сути это нечто метаязыковое. Надязыковое.
И это - гут. В смысле гибкости восприятия и работы с программой, как набором лбъектов и элементов метаязыковости и описания текста...

Ну, и - т.д. ... Короче, дерево и мысль в вялотекущем режиме.... Ниндзя
8. BohdanT - 10 Марта, 2009 - 18:20:28 - перейти к сообщению
Если есть в процедуре RETURN, то FINALLY не катит Однако

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0077]     [ Gzipped ]