Мета нашої компанії -  надання якісних послуг по навчанню та консультуванню клієнтів.

Використання оператору «Попытка Исключение» для обробки виключень в системі BAS

Під час написання коду в системі BAS іноді виникає необхідність в програмній обробці очікуваних помилок, що виникають під час виконання прикладного коду в системі BAS (виключень в подальшому).

Загалом система однаково реагує на виникнення виключень, незалежно від джерела їх виникнення. Самі виключення можуть бути викликані платформою або оператором «ВызватьИсключение» вбудованої мови. Причин виникнення виключень багато. Проте всі вони діляться на відновні та невідновні виключення.

Невідновні виключення – це помилки, після яких подальша робота системи неможлива. Це може бути як у випадку, коли система не може автоматично опрацювати помилку, так і в випадку коли є серйозний збій в роботі програми, що призводить до ризику викривлення даних в інформаційній базі. До таких виключень належать:

  • внутрішні помилки виконання платформи;
  • помилки роботи СУБД;
  • помилки компіляції модулів;
  • критичний збій під час ініціалізації об’єктів.

Такі виключення не можливо перехопити чи якось вплинути на подальше їх опрацювання.

Відновні виключення – це помилки, після яких система може продовжувати роботу. До них належать:

  • помилки виконання коду вбудованої мови;
  • помилки блокування даних (при одночасній роботі декількох користувачів);
  • помилки запису об’єктів;
  • помилки виконання запитів;
  • арифметичні помилки;
  • помилки типів даних;
  • помилки при роботі з файлами.

Більшість з них є помилками часу виконання, які здебільшого можуть бути перехоплені і опрацьовані оператором «Попытка Исключение».

Приклад. Припустимо, що в модулі форми обробки ми плануємо опрацювати дані документу «Етап виробництва» і записати зміни в документ. Для цього необхідно заблокувати документ на момент опрацювання, щоб уникнути можливості зміни документу в інформаційній базі за час обробки. В разі, якщо цей документ вже був заблокований іншим користувачем, виникне помилка часу виконання, яку ми перехопимо програмним способом. Після чого припиним виконання модуля і виведемо сповіщення про помилку (Рис. 1).


Рис. 1. Повідомлення про помилку виконання модуля форми

Для цього в модулі форми обробки, в процедурі на сервері з відкритим контекстом розмістимо наступний код:


Тут синтаксична конструкція ділиться на два блоки. В блоці «Спроби» (між «Попытка» і «Исключение») виконуються оператори спроби чи послідовність таких операторів. Тобто виконується код, коректність виконання якого ми відслідковуємо.

Якщо при виконанні операторів спроби виникає помилка часу виконання, то починають виконуватися оператори блоку «Виключення» (між «Исключение» і «КонецПопытки»), чи їх послідовність. Це дозволяє нам опрацювати виключення альтернативним способом (відмінним від стандартної поведінки системи).

В нашому випадку ми формуємо текст повідомлення для користувача (в тому числі з допомогою методу «ИнформацияОбОшибке()» отримуємо коротке представлення помилки). Після чого, використавши оператор «ВызватьИсключение», завершуємо виконання модулю і виводимо сповіщення про помилку. Якщо помилки не виникає, то оператори виключення будуть пропущені.

В цілому оператор «Попытка» дозволяє нам опрацювати помилки часу виконання модуля, що з’являються при виконанні коду модуля, і керувати поведінкою програми в таких випадках.

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

Самі синтаксичні конструкції «Попытка – Исключение – КонецПопытки» можуть бути вкладеними, і часто використовуються у зв’язці з транзакціями.

  ua