亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Node.js下自定義錯誤類型詳解

 更新時間:2016年10月17日 14:17:39   投稿:daisy  
在JavaScript里面,運(yùn)行過程中的錯誤的類型總是被人忽略,這篇文章給大家詳細(xì)介紹了如何在Node.js下自定義錯誤類型,對大家學(xué)習(xí)或者使用Node.js具有一定的參考借鑒價值,有需要的朋友們可以參考借鑒,下面來一起看看吧。

前言

一般來說,很少人會考慮如何處理應(yīng)用產(chǎn)生的錯誤的策略,調(diào)試的過程中,簡單地利用console.log(‘error')定位錯誤,基本夠用了,通過留下這些調(diào)試信息,能夠?yàn)槲覀円院蟮恼{(diào)試過程中升了不少時間,提高了維護(hù)性。所以錯誤提示非常重要。同時,也會帶來一些比較糟糕用法。最近的項(xiàng)目里就用到了自定義錯誤類型,覺得有必要深入了解一下,所以就寫了這篇文章,方便自己和有需要的大家在需要的時候查閱。

Subclassing Error

首先我們可以定義一個 Error 的子類。通過 Object.create util.inherits 很容易實(shí)現(xiàn):

var assert = require('assert');
var util = require('util');

function NotFound(msg){
 Error.call(this);
 this.message = msg;
}
util.inherits(NotFound, Error);
var error = new NotFound('not found');
assert(error.message);
assert(error instanceof NotFound);
assert(error instanceof Error);
assert.equal(error instanceof RangeError, false);

可以通過 instanceof 來檢查錯誤類型,根據(jù)類型進(jìn)行不同的處理。

上面的代碼設(shè)置了自帶的message, 并且 error NotFound Error 的一個實(shí)例, 但是不是 RangeError

如果用了 express 框架, 就能設(shè)置其他的 properties error 變得更有用。

比方說當(dāng)處理一個HTTP的錯誤時, 就可以寫成這樣:

function NotFound(msg) {
 Error.call(this);
 this.message = msg;
 this.statusCode = 404;
}

現(xiàn)在就已經(jīng)可以通過錯誤處理的中間件來處理錯誤信息:

app.use(function(err, req, res, next) {
 console.error(err.stack);

 if (!err.statusCode || err.statusCode === 500) {
 emails.error({ err: err, req: req });
 }

 res.send(err.statusCode || 500, err.message);
});

這會發(fā)送HTTP的狀態(tài)碼給瀏覽器, 當(dāng) err statusCode 未設(shè)置或者等于 500 的時候, 就通過郵件來發(fā)送這個錯誤。這樣就能排除那些 404, 401, 403等等的錯誤。

讀取 console.error(err.stack) 事實(shí)上并不會像預(yù)期那樣工作,像 node, chrome 基于 V8 的可以使用 Error.captureStackTrace(this, arguments.callee) 的錯誤構(gòu)造函數(shù)來進(jìn)行堆棧跟蹤。

var NotFound = function(msg) {
 Error.call(this);
 Error.captureStackTrace(this, arguments.callee);
 this.message = msg || 'Not Found';
 this.statusCode = 404;
 this.name = "notFound"
}
util.inherits(NotFound, Error);

export.NotFoundError = NotFound;

當(dāng)然我們還可以將上面這個創(chuàng)建的抽象錯誤類型擴(kuò)展到其他自定義錯誤中:

var notFountError = require('./error').NotFountError; 
var UserNotFound = function(msg){
 this.constructor.super_(msg);
}

util.inherits(UserNotFound, notFoundError);

總結(jié)

以上就是Node.js下自定義錯誤類型的全部內(nèi)容,希望本文的內(nèi)容對大家學(xué)習(xí)或者使用Node.js能有一定的幫助,如果有疑問大家可以留言交流。謝謝大家對腳本之家的支持。

相關(guān)文章

  • 用node開發(fā)并發(fā)布一個cli工具的方法步驟

    用node開發(fā)并發(fā)布一個cli工具的方法步驟

    這篇文章主要介紹了用node開發(fā)并發(fā)布一個cli工具的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Nodejs中session的簡單使用及通過session實(shí)現(xiàn)身份驗(yàn)證的方法

    Nodejs中session的簡單使用及通過session實(shí)現(xiàn)身份驗(yàn)證的方法

    session的本質(zhì)使用cookie來實(shí)現(xiàn)。本文給大家介紹Nodejs中session的簡單使用及通過session實(shí)現(xiàn)身份驗(yàn)證的方法,對node.js session相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2016-02-02
  • 詳解Node中導(dǎo)入模塊require和import的區(qū)別

    詳解Node中導(dǎo)入模塊require和import的區(qū)別

    本篇文章主要介紹了詳解Node中導(dǎo)入模塊require和import的區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • PM2自動部署代碼步驟流程總結(jié)

    PM2自動部署代碼步驟流程總結(jié)

    這篇文章主要介紹了PM2自動部署代碼步驟流程總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Node.js中的child_process模塊詳解

    Node.js中的child_process模塊詳解

    這篇文章主要給大家介紹了關(guān)于Node.js中child_process模塊的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-06-06
  • node下使用UglifyJS壓縮合并JS文件的方法

    node下使用UglifyJS壓縮合并JS文件的方法

    下面小編就為大家分享一篇node下使用UglifyJS壓縮合并JS文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • NodeJS使用七牛云存儲上傳文件的方法

    NodeJS使用七牛云存儲上傳文件的方法

    這篇文章主要介紹了NodeJS使用七牛云存儲上傳文件的方法,使用七牛云存儲上傳文件確認(rèn)安裝node和npm,具體服務(wù)器端的云存儲操作方法大家參考下本文吧
    2017-07-07
  • 解決nodejs報錯Error:EPERM:operation not permitted,mkdir‘xxxxxxxxxxxxxxxx‘

    解決nodejs報錯Error:EPERM:operation not permitted,mkdi

    這篇文章主要介紹了解決nodejs報錯Error:EPERM:operation not permitted,mkdir‘xxxxxxxxxxxxxxxx‘問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • node.js做一個簡單的爬蟲案例教程

    node.js做一個簡單的爬蟲案例教程

    這篇文章主要介紹了node.js做一個簡單的爬蟲案例教程,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • node.js安裝及HbuilderX配置詳解

    node.js安裝及HbuilderX配置詳解

    這篇文章主要介紹了node.js安裝及HbuilderX配置的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03

最新評論