Как показать собственное сообщение об ошибке без трассировки стека с помощью suitescript 2.0 в netsuite

Я хочу показать пользовательское сообщение об ошибке без трассировки стека пользователю, использующему версию "suitescript 2.0". В рабочем процессе пользовательское сообщение об ошибке отображается без трассировки стека, но в Suite Script вместе с трассировкой стека отображается «СООБЩЕНИЕ ОБ ОШИБКЕ».

ERROR WITH STACK TRACE: {"type": "error.SuiteScriptError", "name": "MISSING_CONTRACT_LINE", "message": "Пожалуйста, введите хотя бы одну позицию контракта, чтобы сохранить контракт.", «stack»: [«createError (N / error)», «beforeSubmit (SuiteScripts / Ex_UE_Contract_2.0.js: 117)», «createError (N / error)»], «cause»: {«name»: «MISSING_CONTRACT_LINE "," message ":" Введите хотя бы одну позицию контракта, чтобы сохранить контракт. "}," id ":" "}

Я хочу показать собственное сообщение об ошибке без трассировки стека, например: «name»: «MISSING_CONTRACT_LINE», «message»: «Введите хотя бы одну позицию контракта, чтобы сохранить контракт».

мой код:

     throw error.create({
         name: 'MISSING_CONTRACT_LINE',
         message: 'Please enter atleast one Contract Line item to save a contract.'
     });

есть ли какой-либо способ добиться этого?

заранее спасибо.


person Deepan Murugan    schedule 28.07.2016    source источник
comment
В настоящее время на форуме группы пользователей NetSuite ведется продолжительное обсуждение этого вопроса; Другого рекомендованного решения я там тоже не видел. usergroup.netsuite.com/users/forum/platform-areas/customization/   -  person erictgrubaugh    schedule 28.07.2016
comment
Где еще найти решение этой проблемы? Выбранный ниже ответ не работает.   -  person angrycrab    schedule 23.12.2016
comment
См. Мое решение здесь: stackoverflow.com/questions/41294326/   -  person Koby Pichkhadze    schedule 11.05.2018
comment
См. Мое решение здесь ответил в другой ветке.   -  person Koby Pichkhadze    schedule 11.05.2018


Ответы (2)


Реализация по умолчанию метода SuiteScriptError # toString () N / error заключается в вызове JSON.stringify (this), однако метод может быть переопределен для каждого экземпляра для обработки случаев, когда необработанное сообщение об ошибке предназначено для отображения пользователям путем выдачи ошибки вне сценария. Например:

var err = error.create({name: 'NO_JSON', message: 'This should not be displayed as JSON!'})
err.toString = function(){return err.message};
throw err;

В качестве альтернативы можно просто выбросить String, однако промежуточные блоки catch потеряют преимущество доступа к другим свойствам Error, например, Error # stack или Error # name.

person playalpha    schedule 29.07.2016
comment
Это решение больше не работает. Он по-прежнему записывает JSON на экран. - person angrycrab; 23.12.2016

Suite Script версии 2.0:

Сначала определите модуль «N / error» в верхней части вашей функции.

var errorObj = error.create({
                code: 'Custom Error Message Without JSON',
                message: 'Custom Error Message Without JSON'
            });

            throw errorObj.code + '\n\n' + errorObj.message;
            return false;

Если вы не хотите, чтобы отображался КОД ошибки, просто используйте errorObj.message, он отобразит только сообщение.

person Deepan Murugan    schedule 23.12.2016