Обработка исключительных ситуаций

Обработка исключительных ситуаций производится в операторе Try.

Обработка исключительных ситуаций при выполнении Fore-методов

Язык Fore основан на использовании COM-технологии. Если при использовании системных свойств/методов языка Fore возникает исключительная ситуация, то для обработки таких исключений используется класс System.Runtime.InteropServices.COMException.

Если исключительная ситуация возникает при использовании свойств/методов, реализованных в пользовательских Fore-сборках, то обработать такие исключения можно с использование класса System.Exception.

Пример

Пример обработки исключительной ситуации, которая может возникнуть при выполнении системного Fore-метода IMetabaseDefinition.Open:

    Sub Test();
    Var
        MB: IMetabase;
        Sp: ISecurityPackage = New StandardSecurityPackage();
    Begin
        Try
            Mb := Self.Metabase;
            Mb.Definition.Open(Sp.CreateCredentials(AuthenticationMode.amPassword),
                ApplicationMode.amWin, LocaleCodeID.lcidRussian);
        Except On Ex: System.Runtime.InteropServices.COMException Do
            System.Diagnostics.Debug.WriteLine(Ex.Message);
        Finally
        End Try;
    End Sub;

Пример обработки исключительной ситуации, которая может возникнуть при выполнении пользовательского метода, реализованного в Fore-сборке с идентификатором «UserAssm»:

    Sub Test();
    Var
        Svc: IForeServices;
        Run: IForeRuntime;
        Assembly: IForeAssembly;
        FClass: IForeClass;
        FSub: IForeSub;
        FObj: IForeObject;
        v: object;
    Begin
        Svc := Self.Metabase As IForeServices;
        Run := Svc.GetRuntime();
        Run.LoadAssembly("UserAssm");
        Assembly := Run.BindToAssembly("UserAssm");
        FClass := Assembly.BindToClass("UserClass");
        FObj := FClass.CreateObject();
        FSub := FClass.BindToMethod("Test");
        FSub.Self := FObj;
        Try
            FSub.Invoke();
        Except On Ex: System.Exception Do
            System.Diagnostics.Debug.WriteLine(Ex.Message);
        Finally
        End Try;
    End Sub;

См.также:

Исключительные ситуации