1976年贪婪的嘴唇,韩国少妇激三级做爰2023电影,久久久久久精品国产三级涨奶,妖精漫画在线观看免费漫画下拉式

總結Node.js中的一些錯誤類型
來源:易賢網 閱讀:1240 次 日期:2016-08-30 17:06:08
溫馨提示:易賢網小編為您整理了“總結Node.js中的一些錯誤類型”,方便廣大網友查閱!

前言

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

1. 錯誤分類

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

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

1、標準JavaScript錯誤,如:

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

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

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

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

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

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

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

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

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

2. JavaScript錯誤與系統錯誤

2.1 JavaScript錯誤及自定義錯誤

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

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

> 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實例本身的屬性外,還可自定義一些錯誤屬性。如,自定義一個表示狀態的屬性status:

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

error.status = 404;

2.2 系統錯誤

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

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

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

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

3. 異常捕獲

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

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

Node.js有很多異步API,這些API通過回調函數callback進行后續處理。如果發生錯誤,通常會在callback函數的第一個參數中包含一個Error對象;如果未發生錯誤,第一參數將是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中的一些錯誤類型
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
主站蜘蛛池模板: 丰顺县| 康马县| 泰兴市| 富裕县| 繁峙县| 郁南县| 黄石市| 会宁县| 和平区| 潮州市| 青海省| 镇雄县| 昭平县| 星子县| 剑川县| 泽州县| 南皮县| 惠东县| 遂川县| 富顺县| 拉孜县| 灵山县| 洛阳市| 丹凤县| 庆城县| 新竹市| 九江县| 黑山县| 永仁县| 上蔡县| 清镇市| 淮阳县| 蓬安县| 平安县| 厦门市| 晋江市| 司法| 长兴县| 临洮县| 胶州市| 湟中县|