我正在我的快速后端為訊息傳遞應用程式制作 REST api。現在我正在使用 try/catch 來處理服務器端錯誤:
router.get("/:id", async ({ params }, res) => {
try {
const user = await User.findById(params.id);
if (!user) {
res.status(400).json({ message: "Invalid User ID" });
return;
}
res.json(user);
} catch (e) {
res.status(500).json(e);
}
});
這會很好還是我應該使用更好的做法?
uj5u.com熱心網友回復:
首先你應該了解所有型別的錯誤:
https ://nodejs.dev/learn/error-handling-in-nodejs
https://www.honeybadger.io/blog/errors-nodejs/
您專門要求asych/awaitwith ,我建議從此處try/catch使用此代碼段:
export const catchAsync = (fn) => {
return (req, res, next) => {
fn(req, res, next).catch((err) => {
myConsole(err)()
setCodeResponse(Code.UNKNOWN_ERROR)
next(err)
})
}
}
然后像這樣使用它:
requestEdit = catchAsync(async (req, res) => {
// your code
})
所以你不需要try{} catch (){}到處寫。
uj5u.com熱心網友回復:
您的代碼是基本的,但已經很好了。
當您發現錯誤時,將它們記錄在某個地方,這樣您就可以在系統的整個生命周期內跟蹤和修復它們,這是一種很好的做法。你在那里做的方式,如果錯誤沒有發生在你身上,它可能會在你不知情的情況下默默地影響用戶。
您可以將錯誤記錄在任何本地日志中,也可以使用一些以 SaaS 形式提供此服務的在線平臺(有幾個)。
uj5u.com熱心網友回復:
您的代碼適用于小型專案。
如果您有很多檢查或嘗試 catch 塊,您可能需要考慮一個錯誤處理程式。您可以使用 next() 函式轉發錯誤。欲了解更多資訊:https ://expressjs.com/en/guide/error-handling.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/495077.html
標籤:javascript 节点.js 休息 错误处理 粗鲁
上一篇:Javascript如何在推入陣列的物件上創建唯一ID
下一篇:如何使用正則運算式檢查重復的單詞
