1. 程式人生 > >Node.js異常處理

Node.js異常處理

異常處理

  • 什麼是異常?
    計算機不能處理的狀況稱之為異常.

  • 非同步異常物件和被try catch捕獲的物件是一樣的。

    • 不會影響下面程式碼的執行。
    • 錯誤裡面的資訊是堆疊資訊。
      這裡寫圖片描述
    • 可以給error物件設定一個code屬性,便於我們自己對錯誤的管理。
    var err = new Error('錯誤物件資訊');
    err.code = 100;
    err.namename = '連結超市';
    console.log(err);
    console.log(err.code);
    console.log(err.namename);

這裡寫圖片描述

  • throw丟擲異常,導致後面程式碼無法執行

  • try catch 只能捕獲同步異常

try {
  fs.accessSync('./02sfdasdfio.js');
} catch (err) {
  console.log("1"+err); 
}

access(非同步)與accessSync(同步)測試try…catch

    fs.access('hhaa.js',(err,data)=>{
        if(err) {
            //throw err;
            console.log("access"+ err);
        }
        console.log(data);
    })
try{ fs.accessSync('hhaa.js'); }catch(err){ console.log("accessSync:"+ err); } //執行結果: accessSync:ENOENT:no such file or directory,access 'G:\hhaa.js' accessENOENT:no such file or directory,access 'G:\hhaa.js'

注意:try…catch只能捕獲同步程式碼的異常:

    //示例1
    try{
        fs.access('hhaa.js'
,(err,data)=>{ if(err) { throw err; } console.log(data); })
}catch(err){ console.log(111); //捕獲不到異常 } //示例2 fs.access('hhaa.js',(err,data)=>{ try{ if(err){ throw err; } }catch(error){ console.log(111);//可以捕獲到異常 } }) //示例3 try{ fs.accessSync('hhaa.js'); }catch(err){ console.log("accessSync:"+ err); //可以捕獲到異常 }