Обработка исключений (TRY)
Оператор обработки исключений создает действие, которое выполняет другое действие с обработкой исключений.
Оператор имеет до трех частей:
- основное действие — выполняется всегда;
- восстанавливающее действие — выполняется только если основное действие вызвало ошибку; ошибка поглощается, и работа продолжается обычным образом после оператора;
- завершающее действие — выполняется после основного действия (а также восстанавливающего, если оно задано) вне зависимости от того, возникла ли ошибка.
Если основное действие вызвало ошибку и восстанавливающее действие не задано: если завершающее действие тоже не задано, ошибка поглощается без передачи дальше; если завершающее действие задано, оно выполняется и ошибка затем повторно передается окружающему действию.
Внутри восстанавливающего действия информация об ошибке, которая его инициировала, доступна через системные свойства messageCaughtException[], javaStackTraceCaughtException[] и lsfStackTraceCaughtException[] — сообщение об ошибке, Java-стек вызовов и lsFusion-стек вызовов соответственно.
Язык
Для объявления действия, обрабатывающего исключения, используется оператор TRY.
Примеры
tryToImport(FILE f) {
TRY {
LOCAL a = BPSTRING[10] (INTEGER);
IMPORT XLS FROM f TO a = A;
}
}
CLASS MyLock {
lock 'Блокировка'
}
singleDo () {
NEWSESSION {
lock(MyLock.lock);
IF lockResult() THEN
TRY {
MESSAGE 'Lock Obtained';
} CATCH {
MESSAGE messageCaughtException();
} FINALLY unlock(MyLock.lock);
}
}