Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Обработка исключений

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

Механизм обработки исключений позволяет отделить программный код обработки ошибок от смыслового кода.

В языке ISBL существует 2 конструкции для обработки исключений:

блок try … finally … endfinally;

Щелкните для отображения или скрытия подробной информации Подробнее

Синтаксис:

 

try

  [statements]

finally

  [finallystatements]

endfinally

Параметр

Описание

statements

Операторы, во время выполнения которых потенциально может произойти исключение

finallystatements

Операторы, которые выполняются независимо от того, произошло исключение в процессе выполнения блока statements или нет

Если при выполнении операторов [statements] возникает исключение, то сначала выполняются операторы блока [finallystatements], после чего генерируется исключение. Генерация исключений при использовании такой конструкции не блокируется.

В рамках программного кода, помеченного ключевым словом finally, рекомендуется выполнять завершающие операции: закрытие файлов и наборов данных, уничтожение объектов, освобождение других ресурсов, задействованных в анализируемом участке кода;

блок try … except … endexcept

Щелкните для отображения или скрытия подробной информации Подробнее

Синтаксис:

 

try

  [statements]

except

  [exceptstatements]

endexcept

Параметр

Описание

statements

Операторы, во время выполнения которых потенциально может произойти исключение

exceptstatements

Операторы, которые выполняются только в том случае, если в блоке statements произошло исключение

Если при выполнении операторов [statements] возникает исключение, то выполняются операторы блока [exceptstatements]. Исключение, возникшее в блоке try, блокируется. В блоке except осуществляется пользовательская обработка исключений.

Примечание

Слова try, finally, except, endfinally, endexcept являются ключевыми. Их нельзя использовать в качестве идентификаторов.

Щелкните для отображения или скрытия подробной информации Пример 1

// Получить гиперссылку на документ.

try

  Doc = EDocuments.GetObjectByID(DocID)

  HyperLink = Doc.HyperLink(hltText) 

finally

  Doc = nil

endfinally

 

Щелкните для отображения или скрытия подробной информации Пример 2

// Получить наименование документа из параметра "Документ" задачи Task.

// Если параметр не заполнен, вывести понятное пользователю исключение.

 

DocumentInfo = Task.WorkflowParams.ValuByName("Документ").Value

try

  DocumentName = DocumentInfo.Name

except

  Raise(CreateException('ParamIsEmpty'; 'Невозможно получить имя документа, параметр задачи "Документ" пуст'; ecWarning))

endexcept

 

Щелкните для отображения или скрытия подробной информации Пример 3

/* Экспортировать документы из системы Directum с преобразованием в формат PDF.

   EDocumentList – список документов. Элементами списка являются IEDocumentInfo.

   DocumentsFolder – каталог экспорта документов. */

 

/* Преобразовать последние версии документов в формат PDF с настройками по умолчанию. В параметре

   TransformationName функции FCConvertEDocumentToPDF задается способ преобразования в PDF. В качестве значения

   параметра указывается имя записи из справочника Настройки преобразования в PDF. Если параметр не задан,

   применяются настройки из записи справочника, используемой по умолчанию. */

 

// Преобразовать последние версии документов в PDF-формат.

foreach EDocumentInfo in EDocumentList

  ConvertingFailed = FALSE

  try

    EDocument = EDocumentInfo.Document

    FCConvertEDocumentToPDF(EDocument;;TRUE)

  except

    ConvertingFailed = TRUE

  endexcept

 

  Versions = EDocument.Versions

  VersionNumber = GetLastEDocumentVersionNum(EDocument)

 

  if not ConvertingFailed

    // PDF-версии документов экспортировать в подкаталог ConvertToPDFSuccess.

    FileName = Format('%s\ConvertToPDFSuccess\%s.%s';

      ArrayOf(DocumentsFolder; EDocument.ID; Versions.ValueByName(

      VersionNumber).Editor.Extension))

    EDocument.Export(VersionNumber; FileName; False)

  else

    /* Последние версии документов, для которых не удалось выполнить преобразование, экспортировать

       в подкаталог ConvertToPDFFailed. */

    FileName = Format('%s\ConvertToPDFFailed\%s.%s';

      ArrayOf(DocumentsFolder; EDocument.ID; Versions.ValueByName(

      VersionNumber).Editor.Extension))

    EDocument.Export(VersionNumber; FileName; False)

  endif

endforeach

 

Щелкните для отображения или скрытия подробной информации Пример 4

// Удалить временный файл и COM-объект.

 

  TmpFileName = GetTempFolder() & 'NewFile.xml'

  RegExp = CreateObject("VBScript.RegExp")

  try

    

    WriteFile(TmpFileName;; FileText)

    

  finally

    DeleteFile(TmpFileName)

    RegExp = nil

  endfinally

 

© Компания Directum, 2020 Сообщество пользователей Directum
.navbar > a:hover { background: #FFD73B; }