node处理未捕获异常
来源:互联网 发布:算法导论22章 编辑:程序博客网 时间:2024/05/24 04:25
nodejs最有魅力的地方就是异步编程,但异步情况下异常处理起来就比较麻烦了。
// 同步方法var sync = function(){ throw new Error("出错了!!!")}// 异步方法var async = function(callback){ // do something process.nextTick(function(){ throw new Error("出错了!!!") callback() })}
同步方法异常处理是没有问题的:
try { sync()}catch(err){ console.log(err.message) // 出错了!!!}
异步方法这种方式是捕获不到的
try { async()}catch(err){ console.log(err.message) // 不会打印内容}
方法1: 遵守nodejs潜规则,将异常从回调函数中以第一个参数传递出来
// 异步方法var async = function(callback){ // do something process.nextTick(function(){ var err = new Error("出错了!!!"); callback(err) })}async(function(err){ if(err){ console.log(err.message); }else{ // do something }})
方法2: process对象提供了捕获全局异常的方法
// 异步方法var async = function(callback){ // do something process.nextTick(function(){ throw new Error("出错了!!!") callback() })}process.on("uncaughtException", function(err){ console.log(err.message) // 出错了!!!})
这种方法缺点在于它在进程退出时才处理异常,我们往往需要尽早执行
方法三: 使用domain模块创建一个子域(JS子运行环境)
var domain = require('domain').create();domain.on("error", function(err){ console.log(err.message);})domain.run(function(){ async()})
0 0
- node处理未捕获异常
- .net未捕获异常处理
- SetUnhandledExceptionFilter处理未捕获异常
- SetUnhandledExceptionFilter处理未捕获异常
- android 处理未捕获异常
- andoid处理未捕获异常
- java处理未捕获异常
- window未捕获异常处理
- 未捕获异常的处理
- JAVA处理未捕获异常
- 处理Python未捕获异常
- Node.js 中的未捕获异常
- .Net 下未捕获异常的处理
- WPF中未捕获异常之处理
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- .Net 下未捕获异常的处理
- Android如何处理未捕获异常
- Java内存不足之PermGen space错误探究
- 基于Android NDK的交叉编译
- java.lang.OutOfMemoryError: PermGen space及其解决方法
- Activiti工作流简单入门
- NYOJ171 第三届acm省赛 聪明的kk
- node处理未捕获异常
- Activiti工作流引擎使用
- NLP+句法结构(三)︱中文句法结构(CIPS2016、依存句法、文法)
- hdu 3665 Seaside 最短路
- Windows下的Eclipse启动出现:a java runtime environment(JRE) or java development kit(JDK) must be
- 字符串(寻找最大元素)
- 解密Redis持久化
- Activiti入门列子一个简单的Activiti请假流程
- 库函数与系统调用的联系与区别