Сообщения об ошибках
Шаблонизатор CT++ может работать в двух режимах: со строгим контролем синтаксиса (включен по умолчанию) и без. В случае строгого контроля синтаксиса генерируется исключение std::logic_error в следующих случаях:
- Превышена максимальная длина оператора (по умолчанию длина оператора ограничена 64 байтами).
- Обнаружена синтаксическая ошибка в имени оператора. После конструкции <TMPL_ или </TMPL_ не следует ни одно из допустимых названий токенов (var, include, loop, if, else, unless, udf).
Диагностическое сообщение имеет следующий вид: "Syntax error in <TMPL_имя_оперетора ИМЯ_ПАРАМЕТРА at line НОМЕР_СТРОКИ column НОМЕР_СТОЛБЦА."
Пример:
Syntax error in <TMPL_var too_long_dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa at line 132 column 116.
Исключение std::logic_error всегда генерируется независимо от режима проверки синтаксиса шаблона в следующих случаях:
- Обнаружено пересечение операторов.
Пример:
<TMPL_loop loop_var>
<TMPL_if condition>
|---> пересечение операторов TMPL_if и TMPL_loop
</TMPL_loop>
</TMPL_if>
Диагностическое сообщение имеет следующий вид: "Fatal: Logic error near at line НОМЕР_СТРОКИ. Expected </TMPL_имя_оперетора> but found </TMPL_имя_оперетора>."
Пример:
Fatal: Logic error near at line 123. Expected /TMPL_IF, but found /TMPL_LOOP.
- Обнаружена синтаксическая ошибка в имени функции, либо запрашиваемая функция не существует.
Пример:
Line 140 column 66: User defined function `FOOBAR' not found.
- Обнаружены неправильно введенные параметры.
В этом случае исключения генерирутся классом param_data.
Имена функций и переменных не должны содержать символов '>', '(', ')', пробела и не могут начинаться с символа подчеркивания. При вызове из оператора TMPL_var можно указать только один параметр функции.
Copyright © 2003 - 2005 CTPP Dev. Team | http://reki.ru/products/ctpp