Javascript 如何在netsuite中使用SuiteScript2.0在没有堆栈跟踪的情况下显示自定义错误消息

Javascript 如何在netsuite中使用SuiteScript2.0在没有堆栈跟踪的情况下显示自定义错误消息,javascript,error-handling,netsuite,suitescript,Javascript,Error Handling,Netsuite,Suitescript,我想使用“suitescript 2.0”版本向用户显示带有堆栈外跟踪的自定义错误消息。在工作流中,自定义错误消息显示时没有堆栈跟踪,但在套件脚本中,“错误消息”显示时带有堆栈跟踪 堆栈跟踪错误: {“type:“error.suiteScriptorr”,“name:“MISSING_CONTRACT_LINE”,“message:“请输入至少一个合同行项目以保存合同”,“stack:[“createError(N/error)”,“beforeSubmit(SuiteScripts/Ex_U

我想使用“suitescript 2.0”版本向用户显示带有堆栈外跟踪的自定义错误消息。在工作流中,自定义错误消息显示时没有堆栈跟踪,但在套件脚本中,“错误消息”显示时带有堆栈跟踪

堆栈跟踪错误: {“type:“error.suiteScriptorr”,“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”:”“}”

我想显示没有堆栈跟踪的自定义错误消息,如下所示: “名称”:“缺少合同行”,“消息”:“请输入至少一个合同行项目以保存合同。”

我的代码:

     throw error.create({
         name: 'MISSING_CONTRACT_LINE',
         message: 'Please enter atleast one Contract Line item to save a contract.'
     });
有什么可能的方法来实现这一点吗


提前感谢。

N/error的suiteScriptorror#toString()方法的默认实现是调用JSON.stringify(这),但是,该方法可以在每个实例中重写,以处理通过将错误抛出脚本向用户显示原始错误消息的情况。例如:

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

或者,也可以只抛出一个字符串,但是,中间的catch块将失去访问错误的其他属性的好处,例如,Error#stack或Error#name。

Suite Script Version 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,它将只显示消息。

NetSuite用户组论坛目前也对此进行了长时间的讨论;我也没有在那里看到任何其他推荐的解决方案。在哪里可以找到此问题的其他解决方案?sel下面的ected答案似乎不起作用。请在此处查看我的解决方案:请在另一个线程上查看我的解决方案。此解决方案似乎不再起作用。它仍将JSON写入屏幕。