Node.js异常处理

Posted 秋天1014童话

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); //可以捕获到异常
    

以上是关于Node.js异常处理的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 最佳实践异常处理——在 Async/Await 之后

如何在Node,js中处理异常控制?

Node.js如何处理健壮性

Node.js 承诺和异步异常

从 Node.JS 中的未捕获异常中恢复

从 Node.JS 中的未捕获异常中恢复