Вверх ↑
Главный модератор
Ответов: 2999
Рейтинг: 396
#1: 2007-06-26 13:27:46 ЛС | профиль | цитата
Переработанная версия компонента hiTry_catch.hws:

func doTry(data):java
println('try {')
block.inclvl()
event("onTry", data)
block.declvl()
fvar(i)
trace(count(Exceptions))
for(i = 2; i <= _event_count_; i++)
//trace(Exceptions[1]))
println('} catch (',code(Exceptions[i-2]), ' ', '$', code(ObjectName),') {')
block.inclvl()
event("onCatch" + i , data)
block.declvl()
end
println('}')
end
Try_catch.ini:

Version=1.1
Author=Nic
Mail=nic@savelovo.net

[Type]
Class=DPElement
Sub=,Sections|onCatch,,
Info=Конструкция Try - catch
Tab=PHP

[Property]
ObjectName=Имя объекта исключительной ситуации|2|e
Exceptions=Список функций обработчика исключений catch|5|Exception
Sections=Количество секций обработчика исключений, включая секцию Try|1|2

[Methods]
doTry=Формирует конструкцию, состоящую из секции Try и секции(й) catch|1|
onTry=Событие происходит всякий раз при формировании секции Try|2|
Схема примера:

Add(EntryPoint,12010646,63,105)
{
link(onStart,8731090:doTry,[])
}
Add(Try_catch,8731090,112,105)
{
ObjectName="ex"
Exceptions=#10:CustomEx_1|10:CustomEx_2|
Sections=3
link(onTry,501451:doEcho,[])
link(onCatch2,16405751:doEcho,[(166,118)(166,153)])
link(onCatch3,13242436:doEcho,[(160,125)(160,195)])
}
Add(Echo,501451,175,105)
{
Message="Text on Try"
}
Add(Echo,13242436,175,189)
{
Message="Text on Catch_2"
}
Add(Echo,16405751,175,147)
{
Message="Text on Catch_1"
}
Получаемый код:

<?php

try {
echo "Text on Try";
} catch (CustomEx_1 $ex) {
echo "Text on Catch_1";
} catch (CustomEx_2 $ex) {
echo "Text on Catch_2";
}

?>
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0