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

Javascript 如何在NetSuite中从RESTlet抛出自定义错误?,javascript,error-handling,netsuite,Javascript,Error Handling,Netsuite,我试图从RESTlet抛出自定义错误,并试图使其类似于NetSuite的错误格式。我想让客户端看到HTTP代码400。当我使用脚本v1时,我只需执行以下操作: throw nlapiCreateError('MY_ERROR_CODE', 'My message'); 在这种情况下,我得到了这样的答案(这是我的目标): 但当我使用脚本v2时,我会这样做: throw error.create({ name: 'MY_ERROR_CODE', messag

我试图从RESTlet抛出自定义错误,并试图使其类似于NetSuite的错误格式。我想让客户端看到HTTP代码400。当我使用脚本v1时,我只需执行以下操作:

throw nlapiCreateError('MY_ERROR_CODE', '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时获得答案吗?

似乎你运气不好,因为帮助文档没有解释你已经尝试过的内容

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


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

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

如果您尝试添加以下代码会怎么样

函数createError(eTitle,eMessage){
var errorObj=error.create({
姓名:eTitle,
信息:eMessage,
是的,
})
抛出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;


我得到400英镑。没关系。但我不希望我的错误对象像v2脚本那样被包装。我想以我创建的形式获取错误对象,但NetSuite将其包装。能否为您的答案添加解释?另外,你能通过代码块编辑你给出的答案的代码吗?

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


throw myCustomError.message;