繁体   English   中英

如何从 NetSuite 中的 RESTlet 抛出自定义错误?

[英]How to throw a custom error from a RESTlet in NetSuite?

我试图从我的 RESTlet 中抛出自定义错误,并试图使其类似于 NetSuite 的错误格式。 我想让客户端看到 HTTP 代码 400。当我使用脚本 v1 时,我只是这样做:

throw nlapiCreateError('MY_ERROR_CODE', 'My message');

在这种情况下我得到了这样的答案(这是我的目标):

{
    "error":
    {
        "code": "MY_ERROR_CODE",
        "message": "My message"
    }
}

但是当我使用脚本 v2 时,我会这样做:

    throw error.create({
        name: 'MY_ERROR_CODE',
        message: 'My message'});

我明白了:

{
    "error":
    {
        "code": "JS_EXCEPTION",
        "message": "{"type":"error.SuiteScriptError","name":"MY_ERROR_CODE","message":"My message","stack":["createError(N/error)","prevalidations(SuiteScripts/RESTlet.js:152)","doPost(SuiteScripts/RESTlet.js:86)","createError(N/error)"],"cause":{"name":"MY_ERROR_CODE","message":"My message"},"id":""}"
    }
}

如果我使用 v2,谁能告诉我如何在使用 v1 时获得答案?

我没有足够的代表来回复答案。 因此,作为 Prajakta 解决方案的后续,不是创建错误对象然后抛出它,而是引用消息字段。 您可以按照以下方式同时创建和抛出:

 throw error.create({
   name: 'FAILURE',
   message: 'Error details here',
   notifyOff: false
}).message;

似乎您不走运,因为帮助文档没有解释您已经尝试过的内容。

也就是说,您可以进入 NetSuite 调试器 (debugger.netsuite.com) 并在错误对象被抛出之前对其进行探索。 也许您可以设置未记录的属性。 探索 NetSuite 内部结构可能值得一试,而且通常是一次很好的学习体验。

您也可以对 v1 抛出的错误执行相同的操作,并比较它们的不同之处。 您甚至可以从头开始构建自己的 JS 错误对象!

如果您在抛出错误后检查结果代码,您应该看到它实际上是 400。即使您有错误,Netsuite 仍会返回包含错误详细信息的响应正文。 你得到什么代码?

如果您尝试添加以下内容怎么办?

 function createError(eTitle, eMessage) { var errorObj = error.create({ name: eTitle, message: eMessage, notifyOff: true, }) throw errorObj.name + ": " + errorObj.message }

检查下面的代码,这将起作用!

var err = error.create({name: 'MY_ERROR_CODE', message: 'My Message'})

err.toString = function(){return err.message};

抛出错误;

您可以使用throw myCustomError.message而不是throw myCustomError

下面是参考代码块。 让我们知道这是否有帮助


var myCustomError = error.create({
            name: 'FAILURE',
            message: 'Error details here',
            notifyOff: false
});


throw myCustomError.message;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM