From 3f7c47903e1eccdc51db825aa9774078efb8858c Mon Sep 17 00:00:00 2001 From: sfaqer Date: Tue, 14 Jan 2025 21:17:32 +1000 Subject: [PATCH] =?UTF-8?q?=D0=A2=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D0=B2=D1=8B=D0=B1=D1=80=D0=BE=D1=81=D0=B5=20?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=BB=D1=8E=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20?= =?UTF-8?q?=D1=81=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=D0=B0=D1=87=D0=B5=D0=B9?= =?UTF-8?q?=20`=D0=98=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8F=D0=9E=D0=B1=D0=9E=D1=88=D0=B8=D0=B1=D0=BA=D0=B5`=20?= =?UTF-8?q?=D0=B2=20=D0=BA=D0=B0=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=B5=20?= =?UTF-8?q?=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=82=D1=80=D0=B0,=20?= =?UTF-8?q?=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D1=91=D1=82=D1=81=D1=8F=20=D0=BD?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D1=8F=20`=D0=98=D0=BD=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B0=D1=86=D0=B8=D1=8F=D0=9E=D0=B1=D0=9E=D1=88=D0=B8?= =?UTF-8?q?=D0=B1=D0=BA=D0=B5`=20=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D0=B0?= =?UTF-8?q?=D1=8F=20=D1=81=D0=BE=D0=B4=D0=B5=D1=80=D0=B6=D0=B8=D1=82=20?= =?UTF-8?q?=D0=BE=D1=80=D0=B8=D0=B3=D0=B8=D0=BD=D0=B0=D0=BB=D1=8C=D0=BD?= =?UTF-8?q?=D1=83=D1=8E=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8E=20=D0=BE=D0=B1=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA?= =?UTF-8?q?=D0=B5=20=D0=B2=20=D0=BF=D0=BE=D0=BB=D0=B5=20`=D0=9F=D1=80?= =?UTF-8?q?=D0=B8=D1=87=D0=B8=D0=BD=D0=B0`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ScriptEngine/Machine/MachineInstance.cs | 14 ++++++-- tests/global-funcs.os | 36 +++++++++++++++++++++ 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/ScriptEngine/Machine/MachineInstance.cs b/src/ScriptEngine/Machine/MachineInstance.cs index df2d33be3..045163956 100644 --- a/src/ScriptEngine/Machine/MachineInstance.cs +++ b/src/ScriptEngine/Machine/MachineInstance.cs @@ -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 diff --git a/tests/global-funcs.os b/tests/global-funcs.os index a83cd129c..3094086de 100644 --- a/tests/global-funcs.os +++ b/tests/global-funcs.os @@ -78,6 +78,7 @@ ВсеТесты.Добавить("Тест_ДолженПроверитьКраткоеПредставлениеОшибки"); ВсеТесты.Добавить("Тест_ДолженПроверитьПодробноеПредставлениеОшибки"); ВсеТесты.Добавить("Тест_ДолженПроверитьИнформацияОбОшибкеСПричиной"); + ВсеТесты.Добавить("Тест_ДолженПроверитьИнформацияОбОшибкеПробрасываетсяПриВызовеИсключения"); ВсеТесты.Добавить("Тест_ДолженПроверитьОбъединениеПутей"); @@ -933,6 +934,41 @@ КонецПроцедуры +Процедура Тест_ДолженПроверитьИнформацияОбОшибкеПробрасываетсяПриВызовеИсключения() Экспорт + + Попытка + ВыброситьТестовоеИсключение(); + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + КонецПопытки; + + юТест.ПроверитьИстину(ЗначениеЗаполнено(ИнформацияОбОшибке), "Исключение не было брошено"); + + Попытка + ВызватьИсключение ИнформацияОбОшибке; + Исключение + ИнформацияОбОшибке = ИнформацияОбОшибке(); + + юТест.ПроверитьИстину( + СтрНайти(ИнформацияОбОшибке.Описание, "тест-тест-тест") > 0, + "Сообщение в проброшенном исключении должно содержать текст оригинального исключения" + ); + + юТест.ПроверитьТип( + ИнформацияОбОшибке.Причина, + "ИнформацияОбОшибке", + "У проброшенного исключения должна быть заполнена причина, оригинальным исключением" + ); + + юТест.ПроверитьИстину( + СтрНайти(ИнформацияОбОшибке.Причина.Описание, "тест-тест-тест") > 0, + "Оригинальное сообщение должно содержать текст исключения" + ); + + КонецПопытки; + +КонецПроцедуры + Процедура Тест_ДолженПроверитьОбъединениеПутей() Экспорт СИ = Новый СистемнаяИнформация(); Если Найти(СИ.ВерсияОС,"Windows") > 0 Тогда