最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

前言

Node.js應用中可能會發(fā)生多種類型的錯誤。如:當出現(xiàn)語法錯誤或運行時錯誤時,會觸發(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> : 當傳遞錯誤的類型參數(shù)拋出

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

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

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

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

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

2.1 JavaScript錯誤及自定義錯誤

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

自定義錯誤時,使用構造函數(shù)創(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 - 一個整數(shù)的錯誤碼

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

3. 異常捕獲

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

Node.js式回調函數(shù)中的異常捕獲

Node.js有很多異步API,這些API通過回調函數(shù)callback進行后續(xù)處理。如果發(fā)生錯誤,通常會在callback函數(shù)的第一個參數(shù)中包含一個Error對象;如果未發(fā)生錯誤,第一參數(shù)將是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配置Token驗證的2種方式總結

    node.js配置Token驗證的2種方式總結

    token驗證,在設計登錄注冊和一些權限接口時發(fā)揮作用,下面這篇文章主要給大家介紹了關于node.js配置Token驗證的2種方式,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • Node.js學習之地址解析模塊URL的使用詳解

    Node.js學習之地址解析模塊URL的使用詳解

    url模塊是nodejs里面的一個簡單的模塊,下面這篇文章主要給大家介紹了關于Node.js學習之地址解析模塊URL使用的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09
  • Node.js中http模塊和導出共享問題

    Node.js中http模塊和導出共享問題

    這篇文章主要介紹了Node.js中http模塊和導出共享,通過?http?模塊提供的?http.createServer()?方法,就能方便的把一臺普通的電腦,變成一臺?web?服務器,從而對外提供?web?資源服務,本文給大家詳細講解,需要的朋友可以參考下
    2022-10-10
  • nodejs異步編程基礎之回調函數(shù)用法分析

    nodejs異步編程基礎之回調函數(shù)用法分析

    這篇文章主要介紹了nodejs異步編程基礎之回調函數(shù)用法,結合具體實例形式分析了阻塞與非阻塞形式下回調函數(shù)具體功能、使用技巧,需要的朋友可以參考下
    2018-12-12
  • 淺談JS前端模塊化的幾種規(guī)范

    淺談JS前端模塊化的幾種規(guī)范

    這篇文章主要介紹了JS前端模塊化的幾種規(guī)范,對前端模塊化感興趣的同學,可以參考下
    2021-05-05
  • Node koa服務器實現(xiàn)獲取客戶端ip

    Node koa服務器實現(xiàn)獲取客戶端ip

    這篇文章主要為大家詳細介紹了Node koa服務器實現(xiàn)獲取客戶端ip的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解下
    2025-02-02
  • node實現(xiàn)簡單的反向代理服務器

    node實現(xiàn)簡單的反向代理服務器

    本篇文章主要介紹了node實現(xiàn)簡單的反向代理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Node.js利用Net模塊實現(xiàn)多人命令行聊天室的方法

    Node.js利用Net模塊實現(xiàn)多人命令行聊天室的方法

    Node.js Net 模塊提供了一些用于底層的網(wǎng)絡通信的小工具,包含了創(chuàng)建服務器/客戶端的方法,下面這篇文章主要給大家介紹了Node.js利用Net模塊實現(xiàn)命令行多人聊天室的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • 詳解Node.js中exports和module.exports的區(qū)別

    詳解Node.js中exports和module.exports的區(qū)別

    這篇文章主要介紹了詳解Node.js中exports和module.exports的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • nodejs中Express與Koa2對比分析

    nodejs中Express與Koa2對比分析

    提到Node.js開發(fā),不得不提目前炙手可熱的2大框架express和koa。Express誕生已有時日,是一個簡潔而靈活的web開發(fā)框架,使用簡單而功能強大。Koa相對更為年輕,是Express框架原班人馬基于ES6新特性重新開發(fā)的敏捷開發(fā)框架,現(xiàn)在可謂風頭正勁,大有趕超Express之勢。
    2018-02-02

最新評論

夹江县| 玉树县| 延安市| 班戈县| 永安市| 凭祥市| 友谊县| 武汉市| 屏东县| 唐山市| 古丈县| 聂荣县| 习水县| 行唐县| 古田县| 长泰县| 永兴县| 尼玛县| 迭部县| 广汉市| 高台县| 兴隆县| 平陆县| 若羌县| 昌黎县| 谢通门县| 资兴市| 会东县| 青神县| 赫章县| 巫山县| 鄱阳县| 武夷山市| 芮城县| 邛崃市| 义乌市| 关岭| 广东省| 乌拉特后旗| 武山县| 三亚市|