2016-08-15 58 views
1

我想从我的RESTlet中抛出自定义错误,我试图使它与NetSuite的错误格式类似。我想客户看到HTTP代码400。当我使用脚本V1我只是这样做:如何在NetSuite中从RESTlet中引发自定义错误?

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":""}" 
    } 
} 

任何人都可以告诉我如何使用v1时如何获得答案,如果我使用v2?

回答

0

看起来你运气不好,因为帮助文档没有解释超出你已经尝试过的内容。

也就是说,你可以进入NetSuite调试器(debugger.netsuite.com)并在抛出之前探究错误对象。也许有没有记录的属性可以设置。这可能是值得一试的,通常是一个很好的学习经验来探索NetSuite内部。

你也可以为v1抛出的错误做同样的事情,并比较它们的不同之处。你甚至可以从头开始构建你自己的JS错误对象!

0

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

+0

我得到400.没关系。但是我不想让我的错误对象像v2脚本一样被包装起来。我想以我创建的形式得到我的错误对象,但是NetSuite包装了它。 – Logrus

相关问题