国产综合精品在线,精品一区国产精品,中文在线欧美日韩视频,中文字幕制服亚洲另类

<dfn id="ykamo"><pre id="ykamo"></pre></dfn>
  • <rt id="ykamo"><code id="ykamo"></code></rt>
  • <strike id="ykamo"></strike>
    總結(jié)Node.js中的一些錯(cuò)誤類型
    來(lái)源:易賢網(wǎng) 閱讀:1102 次 日期:2016-08-30 17:06:08
    溫馨提示:易賢網(wǎng)小編為您整理了“總結(jié)Node.js中的一些錯(cuò)誤類型”,方便廣大網(wǎng)友查閱!

    前言

    Node.js應(yīng)用中可能會(huì)發(fā)生多種類型的錯(cuò)誤。如:當(dāng)出現(xiàn)語(yǔ)法錯(cuò)誤或運(yùn)行時(shí)錯(cuò)誤時(shí),會(huì)觸發(fā)JavaScript錯(cuò)誤;當(dāng)試圖試訪問(wèn)一個(gè)不存在或沒(méi)有訪問(wèn)的文件時(shí),會(huì)觸發(fā)系統(tǒng)錯(cuò)誤;除JavaScript錯(cuò)誤和系統(tǒng)錯(cuò)誤錯(cuò)誤外,用戶還可以自定義錯(cuò)誤。

    1. 錯(cuò)誤分類

    Node.js是一個(gè)JavaScript運(yùn)行時(shí)平臺(tái),其應(yīng)用發(fā)生錯(cuò)誤都是一個(gè)Error實(shí)例或Error子類的實(shí)例。

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

    1、標(biāo)準(zhǔn)JavaScript錯(cuò)誤,如:

    <EvalError> : 當(dāng)調(diào)用 eval() 失敗時(shí)拋出

    <SyntaxError> : 當(dāng)使用非法JavaScript語(yǔ)法時(shí)拋出

    <RangeError> : 當(dāng)一個(gè)值不在指定范圍內(nèi)時(shí)拋出

    <ReferenceError> : 當(dāng)使用未定義的變量時(shí)拋出

    <TypeError> : 當(dāng)傳遞錯(cuò)誤的類型參數(shù)拋出

    <URIError> : 當(dāng)一個(gè)全局的URI函數(shù)被錯(cuò)誤使用時(shí)拋出

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

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

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

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

    2.1 JavaScript錯(cuò)誤及自定義錯(cuò)誤

    標(biāo)準(zhǔn)JavaScript錯(cuò)誤是由JavaScript語(yǔ)言提供的,表示語(yǔ)法錯(cuò)誤或使用不當(dāng)?shù)腁PI。所有錯(cuò)誤都是一個(gè)Error類實(shí)例,而標(biāo)準(zhǔn)JavaScript錯(cuò)誤會(huì)由語(yǔ)言本身在發(fā)生錯(cuò)誤時(shí)構(gòu)建。

    自定義錯(cuò)誤時(shí),使用構(gòu)造函數(shù)創(chuàng)建實(shí)例即可:

    > throw new Error('出錯(cuò)了,這是錯(cuò)誤信息');

    Error: 出錯(cuò)了,這是錯(cuò)誤信息

      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)

    如上,我們自定義了一個(gè)錯(cuò)誤,并使用throw關(guān)鍵字將錯(cuò)誤拋出。在這個(gè)錯(cuò)誤對(duì)象中,包括錯(cuò)誤信息message和錯(cuò)誤的堆棧信息stack,在異常捕獲后,可以通過(guò)以下兩個(gè)屬性來(lái)訪問(wèn)這些信息:

    1、error.message - 錯(cuò)誤信息

    2、error.stack - 錯(cuò)誤堆棧追蹤信息

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

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

    error.status = 404;

    2.2 系統(tǒng)錯(cuò)誤

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

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

    )2、error.errno - 一個(gè)整數(shù)的錯(cuò)誤碼

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

    3. 異常捕獲

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

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

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

    const fs = require('fs');

    fs.readFile('一個(gè)不存在的文件', (err, data) => {

     if (err) {

      console.error('讀取文件錯(cuò)誤', err);

      return;

     }

     // 其它處理

    });

    基于事件的錯(cuò)誤處理

    如果對(duì)象是一個(gè)EventEmitter,可以通過(guò)對(duì)象 的'error'事件捕獲并處理錯(cuò)誤:

    const net = require('net');

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

    // 為stream添加一個(gè) 'error' 事件處理器:

    connection.on('error', (err) => {

     // 如果連接被服務(wù)器重置或連接不到指定的服務(wù)器

     // 或其它連接錯(cuò)誤時(shí),錯(cuò)誤會(huì)被傳遞到這里

     console.error(err);

    });

    connection.pipe(process.stdout);

    總結(jié)

    以上就是關(guān)于Node.js中的一些錯(cuò)誤類型的總結(jié),能夠理解Node.js中錯(cuò)誤類型,就可以幫我們更好的進(jìn)行錯(cuò)誤處理和異常捕獲。希望本文的內(nèi)容對(duì)大家能有所幫助。

    更多信息請(qǐng)查看網(wǎng)絡(luò)編程
    易賢網(wǎng)手機(jī)網(wǎng)站地址:總結(jié)Node.js中的一些錯(cuò)誤類型
    由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!

    2025國(guó)考·省考課程試聽(tīng)報(bào)名

    • 報(bào)班類型
    • 姓名
    • 手機(jī)號(hào)
    • 驗(yàn)證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
    工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
    云南網(wǎng)警備案專用圖標(biāo)
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
    咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
    云南網(wǎng)警報(bào)警專用圖標(biāo)