Node.js異常處理
阿新 • • 發佈:2019-02-19
異常處理
什麼是異常?
計算機不能處理的狀況稱之為異常.非同步異常物件和被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'
access:ENOENT: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); //可以捕獲到異常
}