[英]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.