【问题标题】:How to show the custom error message without stack trace using suitescript 2.0 in netsuite如何在 netsuite 中使用 suitescript 2.0 显示没有堆栈跟踪的自定义错误消息
【发布时间】:2016-12-02 14:36:33
【问题描述】:

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

堆栈跟踪错误: {"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.'
     });

有什么方法可以实现吗?

提前致谢。

【问题讨论】:

标签: javascript error-handling netsuite suitescript


【解决方案1】:

套件脚本版本 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 它将只显示消息。

【讨论】:

    【解决方案2】:

    N/error 的 SuiteScriptError#toString() 方法的默认实现是调用 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;
    

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

    【讨论】:

    • 此解决方案似乎不再有效。它仍然将 JSON 写入屏幕。
    猜你喜欢
    • 2011-08-12
    • 2015-08-04
    • 1970-01-01
    • 2023-03-29
    • 2016-10-30
    • 1970-01-01
    • 2013-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多