IExpression.ThrowException

Синтаксис

ThrowException: Boolean;

Описание

Свойство ThrowException определяет, будет ли генерироваться исключительная ситуация платформы при наличии ошибок в разбираемом выражении.

Комментарии

По умолчанию свойству установлено значение True, при этом если во время разбора выражения возникла ошибка, то будет генерироваться исключительная ситуация платформы, которую можно обработать в операторе Try … End Try.

Если свойству установить значение False, то при разборе некорректного выражения исключительная ситуация генерироваться не будет. Для проверки корректности выражения необходимо будет использовать свойство Valid.

При любом значении данного свойства, если при разборе выражения возникла ошибка, то данная ошибка будет доступна в свойстве Exception.

Пример

Для выполнения примера предполагается наличие формы, расположенных на ней двух кнопок с наименованиями «Button1» и «Button1» и компонента ExpressionEdit с наименованием «ExpressionEdit1». В репозитории имеется таблица с идентификатором «Table_1». Последнее поле таблицы является вычисляемым.

Class TestForm: Form

Button1: Button;

Button2: Button;

ExpressionEdit1: ExpressionEdit;

MB: IMetabase;

Tab: ITable;

Field: ITableField;

 

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);

Begin

MB := MetabaseClass.Active;

Tab := MB.ItemById("Table_1").Edit As ITable;

Field := Tab.Fields.Item(Tab.Fields.Count - 1);

ExpressionEdit1.Expression := Field.Expression;

End Sub Button1OnClick;

 

Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);

Var

Expr: IExpression;

ErrInfo: IExpressionErrorInfo;

Begin

Expr := ExpressionEdit1.Expression;

Expr.ThrowException := False;

Expr.AsString := ExpressionEdit1.Formula;

If Not Expr.Valid Then

ErrInfo :=Expr.ErrorInfo;

WinApplication.ErrorBox("При разборе выражения возникла ошибка: "

+ ErrInfo.ErrorMessage + "." + #10 + #13 + "Позиция: " + ErrInfo.Position.ToString);

Else

Field.Expression.AsString := Expr.AsString;

(Tab As IMetabaseObject).Save;

End If;

End Sub Button2OnClick;

 

End Class TestForm;

При выполнении формы, после нажатия кнопки «Button1» компонент «ExpressionEdit1» будет подключен к выражению вычисляемого поля таблицы. После редактирования выражения в компоненте «ExpressionEdit1», при нажатии на кнопку «Button2» будет осуществляться проверка корректности введенного выражения для использования в вычисляемом поле таблицы. Если выражение корректно, то оно будет обновлено в вычисляемом поле таблицы и таблица будет сохранена. Если введенное выражение некорректно, то на экран будет выведено сообщение, содержащее текст и номер позиции, в которой возникла ошибка. При некорректном выражении исключительная ситуация платформы возникать не будет.

См. также:

IExpression