Показать сообщение отдельно
Старый 12.10.2020, 09:41   #1  
oleggy is offline
oleggy
Участник
 
253 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
как перехватить исключение в нескольких {}
Привет.
Не могу понять почему не перехватывает исключение.
Цель поймать исключение в методе numRemTemplate (весь стек ниже):
X++:
public static Integer numRemTemplate(Num _num, Num mask)
{
	...
	throw error(strfmt("@SYS25062",tmpNum, tmpTxt));
	...
}

Поэтому в методе getSubProjId по стеку ниже создал исключение:
X++:
void getSubProjId()
{
	...
	try
	{
	...
		sonNum = ProjTable::numRemTemplate(projFormat, format);
	...
	}
	catch
	{
		  throw error("error");
	}
	...
}


Но в данном методе не ловится исключение, оно срабатывает ниже по стеку в методе canClose:
X++:
catch (Exception::Error)
{
	if (this.numberSeqFormHandler())
	{
		this.numberSeqFormHandler().formMethodClose();
	}

	okToCreateJob = false;

	return checkfailed("@APM342");
}

Стек вызовов:

[s] \Data Dictionary\Tables\ProjTable\Methods\numRemTemplate 30
[s] \Classes\APMJobProjectMaintenance\getSubProjId 22
[s] \Classes\APMJobProjectMaintenance\createProject 61
[s] \Classes\APMJobProjectMaintenance\createNewJobProject 21
[s] \Data Dictionary\Tables\APMJobTableLine\Methods\insert 36
[c] \Classes\APMJobTableType\createJobLines 21
[c] \Classes\APMJobTableType\create 14
[c] \Forms\APMJobTableCreate\Methods\canClose 123
[c] \Classes\FormRun\closeOk
[c] \Classes\FormRun\task
[c] \Classes\SysSetupFormRun\task 27


Странно, вроде должен перехватывать исключение.

Последний раз редактировалось oleggy; 12.10.2020 в 09:47.