我试图从我的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,有人能告诉我如何获得答案吗?
答案 0 :(得分:1)
我没有足够的代表来回复答案。因此,作为 Prajakta 解决方案的后续,不是创建错误对象然后抛出它,而是引用消息字段。您可以按照以下方式同时创建和抛出:
throw error.create({
name: 'FAILURE',
message: 'Error details here',
notifyOff: false
}).message;
答案 1 :(得分:0)
如果在抛出错误后检查结果代码,您应该看到它实际上是400.即使您有错误,Netsuite仍然会返回一个包含错误详细信息的响应正文。你得到什么代码?
答案 2 :(得分:0)
如果您尝试添加以下内容怎么办?
function createError(eTitle, eMessage) {
var errorObj = error.create({
name: eTitle,
message: eMessage,
notifyOff: true,
})
throw errorObj.name + ": " + errorObj.message
}
答案 3 :(得分:0)
请检查以下代码,这将起作用!
var err = error.create({名称:'MY_ERROR_CODE',消息:'我的消息'})
err.toString = function(){return err.message};
抛出错误;
答案 4 :(得分:0)
您可以使用 throw myCustomError.message
代替 throw myCustomError
以下是参考代码块。让我们知道这是否有帮助
var myCustomError = error.create({
name: 'FAILURE',
message: 'Error details here',
notifyOff: false
});
throw myCustomError.message;