欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

總結Node.js中的一些錯誤類型

 更新時間:2016年08月15日 17:24:48   投稿:daisy  
NodeJS 的錯誤處理讓人痛苦,在很長的一段時間里,大量的錯誤被放任不管。但是要想建立一個健壯的 Node.js 程序就必須正確的處理這些錯誤,而且這并不難學。下面跟著小編一起來學習學習。

前言

Node.js應用中可能會發(fā)生多種類型的錯誤。如:當出現語法錯誤或運行時錯誤時,會觸發(fā)JavaScript錯誤;當試圖試訪問一個不存在或沒有訪問的文件時,會觸發(fā)系統(tǒng)錯誤;除JavaScript錯誤和系統(tǒng)錯誤錯誤外,用戶還可以自定義錯誤。

1. 錯誤分類

Node.js是一個JavaScript運行時平臺,其應用發(fā)生錯誤都是一個Error實例或Error子類的實例。

在Node.js應用中,可能發(fā)生的錯誤有以下4類:

     1、標準JavaScript錯誤,如:

          <EvalError> : 當調用 eval() 失敗時拋出

          <SyntaxError> : 當使用非法JavaScript語法時拋出

          <RangeError> : 當一個值不在指定范圍內時拋出

          <ReferenceError> : 當使用未定義的變量時拋出

          <TypeError> : 當傳遞錯誤的類型參數拋出

          <URIError> : 當一個全局的URI函數被錯誤使用時拋出

       2、系統(tǒng)錯誤,這類錯誤由底層系統(tǒng)觸發(fā),如試圖打開不存在的文件,試圖通過已關閉的Soket發(fā)送數據時等

       3、自定義錯誤,這類錯誤在應用代碼中由用戶指定觸發(fā)

       4、斷言錯誤,這類錯誤在代碼違反合法邏輯時,由Node.js的assert模塊觸發(fā)

2. JavaScript錯誤與系統(tǒng)錯誤

2.1 JavaScript錯誤及自定義錯誤

標準JavaScript錯誤是由JavaScript語言提供的,表示語法錯誤或使用不當的API。所有錯誤都是一個Error類實例,而標準JavaScript錯誤會由語言本身在發(fā)生錯誤時構建。

自定義錯誤時,使用構造函數創(chuàng)建實例即可:

> throw new Error('出錯了,這是錯誤信息');
Error: 出錯了,這是錯誤信息
  at repl:1:7
  at REPLServer.defaultEval (repl.js:248:27)
  at bound (domain.js:280:14)
  at REPLServer.runBound [as eval] (domain.js:293:12)
  at REPLServer.<anonymous> (repl.js:412:12)
  at emitOne (events.js:82:20)
  at REPLServer.emit (events.js:169:7)
  at REPLServer.Interface._onLine (readline.js:210:10)
  at REPLServer.Interface._line (readline.js:549:8)
  at REPLServer.Interface._ttyWrite (readline.js:826:14)

如上,我們自定義了一個錯誤,并使用throw關鍵字將錯誤拋出。在這個錯誤對象中,包括錯誤信息message和錯誤的堆棧信息stack,在異常捕獲后,可以通過以下兩個屬性來訪問這些信息:

       1、error.message - 錯誤信息

       2、error.stack - 錯誤堆棧追蹤信息

除Error實例本身的屬性外,還可自定義一些錯誤屬性。如,自定義一個表示狀態(tài)的屬性status:

var error = new Error('您訪問的頁面不存在');
error.status = 404;

2.2 系統(tǒng)錯誤

系統(tǒng)錯誤是對JavaScript錯誤Error對象的一個擴展,它們表示程序能夠處理的操作錯誤,這些錯誤信息都是在系統(tǒng)級別生成的。系統(tǒng)錯誤實例中除Error實例中的屬性外,還包括以下幾個屬性:

       1、error.syscall - 一個表示失敗的系統(tǒng)調用信息的字符串

       2、error.errno - 一個整數的錯誤碼

       3、error.code - 表示錯誤字符串,通常是大寫字母E開頭

3. 異常捕獲

Node.js采用事件驅動、異步編程基制,這意味著try / catch捕獲不到異步處理發(fā)生的錯誤。針對這種情況,我們可以使用以下兩種方式來捕獲或傳遞錯誤:

Node.js式回調函數中的異常捕獲

Node.js有很多異步API,這些API通過回調函數callback進行后續(xù)處理。如果發(fā)生錯誤,通常會在callback函數的第一個參數中包含一個Error對象;如果未發(fā)生錯誤,第一參數將是null。如:

const fs = require('fs');
fs.readFile('一個不存在的文件', (err, data) => {
 if (err) {
  console.error('讀取文件錯誤', err);
  return;
 }
 // 其它處理
});

基于事件的錯誤處理

如果對象是一個EventEmitter,可以通過對象 的'error'事件捕獲并處理錯誤:

const net = require('net');
const connection = net.connect('localhost');

// 為stream添加一個 'error' 事件處理器:
connection.on('error', (err) => {
 // 如果連接被服務器重置或連接不到指定的服務器
 // 或其它連接錯誤時,錯誤會被傳遞到這里
 console.error(err);
});

connection.pipe(process.stdout);

總結

以上就是關于Node.js中的一些錯誤類型的總結,能夠理解Node.js中錯誤類型,就可以幫我們更好的進行錯誤處理和異常捕獲。希望本文的內容對大家能有所幫助。

相關文章

  • 詳解如何使用Node.js實現熱重載頁面

    詳解如何使用Node.js實現熱重載頁面

    這篇文章主要介紹了詳解如何使用Node.js實現熱重載頁面,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Nodejs中Express 常用中間件 body-parser 實現解析

    Nodejs中Express 常用中間件 body-parser 實現解析

    這篇文章主要介紹了Nodejs中Express 常用中間件 body-parser 實現解析,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 使用webpack打包koa2 框架app

    使用webpack打包koa2 框架app

    本文給大家介紹的是使用webpack為koa2框架打包的步驟及最終的部署,非常實用,有需要的小伙伴可以參考下
    2018-02-02
  • node打造微信個人號機器人的方法示例

    node打造微信個人號機器人的方法示例

    這篇文章主要介紹了node打造微信個人號機器人的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • node.js+postman+mongodb搭建測試注冊接口的實現

    node.js+postman+mongodb搭建測試注冊接口的實現

    本文主要介紹了node.js+postman+mongodb搭建測試注冊接口的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • websocket+node.js實現實時聊天系統(tǒng)問題咨詢

    websocket+node.js實現實時聊天系統(tǒng)問題咨詢

    最近新學習websocket,做了一個實時聊天。用Node.js搭建的服務:serevr.js. 兩個相互通信頁面:client.html 和server.html 但是就是有很多問題,下面通過本文給大家分享下
    2017-05-05
  • 如何用Node寫頁面爬蟲的工具集

    如何用Node寫頁面爬蟲的工具集

    這篇文章主要介紹了如何用Node寫頁面爬蟲的工具集,主要介紹了三種方法,分別是Puppeteer、cheerio和Auto.js,感興趣的小伙伴們可以參考一下
    2018-10-10
  • nodejs基于mssql模塊連接sqlserver數據庫的簡單封裝操作示例

    nodejs基于mssql模塊連接sqlserver數據庫的簡單封裝操作示例

    這篇文章主要介紹了nodejs基于mssql模塊連接sqlserver數據庫的簡單封裝操作,結合實例形式分析了nodejs中mssql模塊的安裝與操作sqlserver數據庫相關使用技巧,需要的朋友可以參考下
    2018-01-01
  • npm全局模塊卸載及默認安裝目錄修改方法

    npm全局模塊卸載及默認安裝目錄修改方法

    今天小編就為大家分享一篇npm全局模塊卸載及默認安裝目錄修改方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Cli Todo命令行todo工具使用演示

    Cli Todo命令行todo工具使用演示

    這篇文章主要為大家介紹了Cli Todo命令行todo工具使用演示示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08

最新評論