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秒后执行,因为它在异常捕获时,已经加入事件队列中。
nodejs process uncaughtException的更多相关文章
- NodeJS异常处理uncaughtException篇
		很多 NodeJS 的开发者在抱怨异常处理太麻烦,我们会通过一些列博客梳理一下NodeJS中常见的异常处理的手段. 和大多数编程语言一样,在 NodeJS 里可以通过throw抛出一个异常: thro ... 
- nodejs process.memoryUsage() rss等参数啥含义
		1 前言 使用process.memoryUsage() ,然后可以得到一个对象如下: { rss: 4935680, heapTotal: 1826816, heapUsed: 650472, ex ... 
- NodeJS的Cluster模块使用
		一.前言大家都知道nodejs是一个单进程单线程的服务器引擎,不管有多么的强大硬件,只能利用到单个CPU进行计算.所以,有人开发了第三方的cluster,让node可以利用多核CPU实现并行. 随着n ... 
- 路径 (Path)–nodejs
		本模块包含一套用于处理和转换文件路径的工具集.几乎所有的方法只做字符串变换, 不会调用文件系统检查路径是否有效. 通过 require('path') 来加载此模块.以下是本模块所提供的方法: pat ... 
- nodejs http静态服务器
		使用nodejs写的很简单的静态服务器,没有做cluster处理,没有做缓存处理,不支持访问文件夹,功能只有一个,就是获取到文件后再返回文件内容. var fs = require('fs'); va ... 
- nodejs和vue的那些事
		nodejs >1.旨在提供一种简单的构建可伸缩网络程序的方法 官方网站:http://nodejs.cn/api/ Node.js 是一个基于Chromev8 JavaScript 运行时建立 ... 
- nodejs 2017
		1. nodejs函数 path() nodejs全局变量 __dirname a.js // 运行 node a.js var path = require('path'); console.l ... 
- node中非常重要的process对象,Child Process模块
		node中非常重要的process对象,Child Process模块Child Process模块http://javascript.ruanyifeng.com/nodejs/child-proc ... 
- NodeJS基础API-path相关的问题basename,extname,dirname,parse,format,sep,delimiter,win32,posix
		path 参考文档:http://nodejs.cn/api/path.html const {normalize} = require('path'); // ES6语法 // 相当于 const ... 
随机推荐
- 使用PyTorch构建神经网络模型进行手写识别
			使用PyTorch构建神经网络模型进行手写识别 PyTorch是一种基于Torch库的开源机器学习库,应用于计算机视觉和自然语言处理等应用,本章内容将从安装以及通过Torch构建基础的神经网络,计算梯 ... 
- 编写Java程序_银行终端服务系统
			目录 一.General description 总体概述 二.About the Project 项目介绍 三.Soft function 软件功能 四.UI Model Use Case Diag ... 
- LDAP客户端安装
			安装环境: 10.43.159.7 客户端 使用ldap客户端验证登陆: 用户为10.43.159.9服务端上面创建的ldap:zdh1234 1.安装LDAP client认证需要的pam包 yum ... 
- 关于MySQL导入数据到elasticsearch的小工具logstash
			logstash核心配置文件pipelines.yml #注:此处的 - 必须顶格写必须!!! - pipeline.id: invitation #下面路径配置的是你同步数据是的字段映射关系 pat ... 
- cnetos7安装字体
			1 先下载字体 链接:https://pan.baidu.com/s/1FEV7K8c8S6o3gBukkSGp4w 提取码:font 2 安装字体脚本 vi font.sh #!/bin/bash ... 
- slf4j+logback日志框架 的具体使用操作【spring boot自带的默认日志框架】
			1.前言 是不是还在使用System.out.println()打印数据到控制台看? 东西少还好,如果多起来,那就看的很烦人了,特别还有加时间等信息. 怎么解决? 可以使用日志框架 ,常见的有 log ... 
- 实验 6 :OpenDaylight 实验——OpenDaylight 及 Postman实现流表下发
			实验 6 :OpenDaylight 实验--OpenDaylight 及 Postman实现流表下发 一.实验目的 熟悉 Postman 的使用:熟悉如何使用 OpenDaylight 通过 Pos ... 
- Mysql查询阻塞的sql
			SELECTp2.`HOST` 被阻塞方host,p2.`USER` 被阻塞方用户,r.trx_id 被阻塞方事务id,r.trx_mysql_thread_id 被阻塞方线程号,TIMESTAMPD ... 
- 关于less使用初学者常犯错误
			1.多层嵌套 2.定义变量复用性不高 3.方法定义多余参数. 
- javax.el.PropertyNotFoundException: 类型[xx.xxx.xxxx]上找不到属性[xxxx]
			今天在JSP利用EL表达式取值报了 "javax.el.PropertyNotFoundException" 1 Caused by: org.apache.jasper.Jasp ... 
