zoukankan      html  css  js  c++  java
  • nodejs process uncaughtException

    用过Node一段时间之后,发现那些在事件主循环里碰到的异常会导致Node进程退出。在许多应用场景下,特别是对那些希望永不当机的服务器程序来说,这都是不接受的。uncaughtException事件会提供一个极其暴力的方法来捕获这些异常。它确实是最后一道防线了,但对解决此问题上非常有效果。

    示例1

    Js代码

    var http = require('http');
    
    var server = http.createServer(function(req,res){
        res.writeHead(200,{});
        res.end('response');
        setTimeout(function(){
            console.log('This will still run.');
        },2000);
        method(); //由于method()未定义,会将程序进程退出。
        console.log('response end');
    });
    
    server.listen(10086);
    
    process.on('uncaughtException', function (err) {
        console.log('Caught Exception:' + err);//直接捕获method()未定义函数,Node进程未被退出。
    });
    
    

    示例2

    Js代码

    var http = require('http');
    
    var server = http.createServer(function(req,res){
        res.writeHead(200,{});
        res.end('response');
        setTimeout(function(){
            method(); //由于method()未定义,会将程序进程退出。
            console.log('This will still run.');
        },2000);
    //    method();
    });
    
    server.listen(10086);
    
    process.on('uncaughtException', function (err) {
        console.log('Caught Exception:' + err); //直接捕获method()未定义函数,Node进程未被退出。
    });
    
    

    上述的例子,我们为uncaughtException创建了一个事件监听器。然后将异常描述做一个简单的标准输出,由于method()函数未定义,所以它捕获了一个不存在的函数触发的事件,所以Node程序程序不会退出,但是标准的执行流程会被打断。console.log('response end')这段代码将不会被执行,而setTimeout()函数里的程序将在2秒后执行,因为它在异常捕获时,已经加入事件队列中。

  • 相关阅读:
    MFC之绘制线条
    CDC类详解
    MFC之消息映射机制实现方法
    VS2008如何自动添加消息映射
    MFC框架程序剖析
    Visual Assist 相同内容高亮显示
    Win32 Console Application、Win32 Application、MFC三者之间的联系和区别
    win32应用程序创建流程
    BigDecimal最基础用法【转】
    html 高亮显示表格当前行【转】
  • 原文地址:https://www.cnblogs.com/ysk123/p/9848273.html
Copyright © 2011-2022 走看看