簡體   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