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

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

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

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

В языке 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 – каталог экспорта документов.

 

// Получить константу, содержащую адрес сервиса преобразования.

DCTSConvertToPDFWSDL = GetAssignedConst("DCTSConvertToPDFWSDL")

 

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

foreach EDocumentInfo in EDocumentList

  ConvertingFailed = FALSE

  try

    EDocument = EDocumentInfo.Document

    DCTSConvertEDocumentToPDF(DCTSConvertToPDFWSDL; 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, 2018 Сообщество пользователей DIRECTUM
.navbar > a:hover { background: #FFD73B; }