12.10.2020, 09:41 | #1 |
Участник
|
как перехватить исключение в нескольких {}
Привет.
Не могу понять почему не перехватывает исключение. Цель поймать исключение в методе 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. |
|
12.10.2020, 11:00 | #2 |
Участник
|
Скорее всего метод getSubProjId вызывается внутри транзакции
Try Catch в методе update на таблице |
|