Skip to content

Commit

Permalink
Merge pull request #1488 from sfaqer/feature/excInfoRethrow
Browse files Browse the repository at this point in the history
Пробрасывание информации об ошибке через ВызватьИсключение
  • Loading branch information
EvilBeaver authored Jan 21, 2025
2 parents 0d2445c + 3f7c479 commit fb12d30
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 3 deletions.
14 changes: 11 additions & 3 deletions src/ScriptEngine/Machine/MachineInstance.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1250,12 +1250,20 @@ private void RaiseException(int arg)
else
{
var exceptionValue = _operationStack.Pop().GetRawValue();
if (exceptionValue is ExceptionInfoContext { IsErrorTemplate: true } excInfo)
if (exceptionValue is ExceptionInfoContext { IsErrorTemplate: true } excTemplateInfo)
{
throw new ParametrizedRuntimeException(
excTemplateInfo.Description,
excTemplateInfo.Parameters,
excTemplateInfo.InnerException
);
}
else if (exceptionValue is ExceptionInfoContext { IsErrorTemplate: false } excInfo)
{
throw new ParametrizedRuntimeException(
excInfo.Description,
excInfo.Parameters,
excInfo.InnerException
ValueFactory.Create(),
excInfo
);
}
else
Expand Down
36 changes: 36 additions & 0 deletions tests/global-funcs.os
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@
ВсеТесты.Добавить("Тест_ДолженПроверитьКраткоеПредставлениеОшибки");
ВсеТесты.Добавить("Тест_ДолженПроверитьПодробноеПредставлениеОшибки");
ВсеТесты.Добавить("Тест_ДолженПроверитьИнформацияОбОшибкеСПричиной");
ВсеТесты.Добавить("Тест_ДолженПроверитьИнформацияОбОшибкеПробрасываетсяПриВызовеИсключения");

ВсеТесты.Добавить("Тест_ДолженПроверитьОбъединениеПутей");

Expand Down Expand Up @@ -933,6 +934,41 @@

КонецПроцедуры

Процедура Тест_ДолженПроверитьИнформацияОбОшибкеПробрасываетсяПриВызовеИсключения() Экспорт

Попытка
ВыброситьТестовоеИсключение();
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();
КонецПопытки;

юТест.ПроверитьИстину(ЗначениеЗаполнено(ИнформацияОбОшибке), "Исключение не было брошено");

Попытка
ВызватьИсключение ИнформацияОбОшибке;
Исключение
ИнформацияОбОшибке = ИнформацияОбОшибке();

юТест.ПроверитьИстину(
СтрНайти(ИнформацияОбОшибке.Описание, "тест-тест-тест") > 0,
"Сообщение в проброшенном исключении должно содержать текст оригинального исключения"
);

юТест.ПроверитьТип(
ИнформацияОбОшибке.Причина,
"ИнформацияОбОшибке",
"У проброшенного исключения должна быть заполнена причина, оригинальным исключением"
);

юТест.ПроверитьИстину(
СтрНайти(ИнформацияОбОшибке.Причина.Описание, "тест-тест-тест") > 0,
"Оригинальное сообщение должно содержать текст исключения"
);

КонецПопытки;

КонецПроцедуры

Процедура Тест_ДолженПроверитьОбъединениеПутей() Экспорт
СИ = Новый СистемнаяИнформация();
Если Найти(СИ.ВерсияОС,"Windows") > 0 Тогда
Expand Down

0 comments on commit fb12d30

Please sign in to comment.