1.如果将异步方法用同步的方式执行,try catch能捕获到错误,同时不会阻塞到主进程,因此console.log(3333)能执行.

var fs = require('fs');

try {

var data = fs.readFileSync('sample.txt', 'utf-8');

console.log(data);

} catch (err) {

// 出错了

console.log(err);}console.log(3333);

2.对于某些库不带回调函数,但是又是异步方法,这就很难捕捉错误了var d = domain.create();

d.name = 'd1';

process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
}); d.on('error',function(err){
console.log('domain捕获到错误',err);
}); d.run(function() {
console.log(1);
var fs = require('fs');
fs.readFile('sample.txt', 'utf-8');
console.log(2);
}
); console.log(3);
结果:异步的方法,如果没有回调函数就会在运行完之后抛出错误,其后续的程序都会执行,而用domain捕获的同步方法,则会将进程阻塞,后续方法不会执行

1
2
3
domain捕获到错误 { [Error: ENOENT: no such file or directory, open 'sample.txt']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'sample.txt',
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [],
name: 'd1' },
domainThrown: true }


var d = domain.create();
d.name = 'd1'; process.on('uncaughtException', function (err) {
console.log('Caught exception: ' + err);
}); d.on('error',function(err){
console.log('domain捕获到错误',err);
}); d.run(function() {
console.log(1);
var fs = require('fs');
fs.readFileSync('sample.txt', 'utf-8');
console.log(2);
}
); console.log(3333);
结果:同步的方法用domain,一旦有错误就会阻塞进程.

1
domain捕获到错误 { [Error: ENOENT: no such file or directory, open 'sample.txt']
errno: -2,
code: 'ENOENT',
syscall: 'open',
path: 'sample.txt',
domain:
Domain {
domain: null,
_events: { error: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
members: [],
name: 'd1' },
domainThrown: true }

Process finished with exit code 0


												

Q的深层嵌套的更多相关文章

  1. 利用Idea重构功能及Java8语法特性——优化深层嵌套代码

    当遇到深层嵌套代码,如for,if,lambda表达式或内部类及这些代码的组合,这时我们可以通过Java 8的语法特性来进行优化. 下面的代码是一个嵌套循环的示例. public MappedFiel ...

  2. 如何在深层嵌套ngRepeat中获取不同层级的$index

    <ul class="list-group" ng-repeat="item in vm.appData" ng-init="outerInde ...

  3. 对深层嵌套对象进行取值&赋值

    需求如下: let obj = { foo: { bar: { name: 'biz' } } }; // 输出 'biz' this.getObj(obj, 'foo.bar.name'); obj ...

  4. Vue组件传值(三)之 深层嵌套组件传值 - $attrs 和 $listeners

    $attrs 包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外).当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class和 ...

  5. Sass变量、嵌套

    声明变量定义变量的语法Sass 的变量包括三个部分: 声明变量的符号“$” 变量名称 赋予变量的值简单的示例,假设你的按钮颜色可以给其声明几个变量: $brand-primary : darken(# ...

  6. 【转】一个工具类(可以控制多层嵌套的movieClip)

    好多人也应该遇到和我一样的问题,当设计师给了我们一个多层嵌套的movieClip时,我们在写代码时无法将movieClip完全停止掉,主要是基于好多movieClip有深层嵌套,主时间轴不在最上层导致 ...

  7. Angular中ui-router实现路由嵌套案例

    学习 ui-router 资料整理 对于Angular内置的路由是单路由视图,ui-router可以实现路由嵌套.后面将会有一个案例概括前面所有资料整理 学习 ui-router - 管理状态  ht ...

  8. JavaScript进阶之路——认识和使用Promise,重构你的Js代码

    一转眼,这2015年上半年就过去了,差不多一个月没有写博客了,"罪过罪过"啊~~.进入了七月份,也就意味着我们上半年苦逼的单身生活结束了,从此刻起,我们要打起十二分的精神,开始下半 ...

  9. Non Lasting Storage File System、procfs、sysfs

    catalog . 引言 . proc文件系统 . 简单的文件系统 . sysfs 0. 引言 传统上,文件系统用于在块设备上持久存储数据,但也可以使用文件系统来组织.提供.交换并不存储在块设备上的信 ...

随机推荐

  1. AdaBoost算法分析与实现

    AdaBoost(自适应boosting,adaptive boosting)算法 算法优缺点: 优点:泛化错误率低,易编码,可用在绝大部分分类器上,无参数调整 缺点:对离群点敏感 适用数据类型:数值 ...

  2. 关于AJAX中函数的执行顺序

    考察w3school上的一个实际的例子[1]: <html> <head> <script type="text/javascript"> fu ...

  3. win10 系统怎么获取最高管理员权限删除文件

    http://www.xitongcity.com/jiaocheng/win8_content_3473.html 很多win8.1系统用户在对磁盘文件进行清理时,经常会遇到“文件夹访问被拒绝,您需 ...

  4. Fouandation(NSString ,NSArray,NSDictionary,NSSet) 中常见的理解错误区

    Fouandation 中常见的理解错误区 1.NSString //快速创建(实例和类方法) 存放的地址是 常量区 NSString * string1 = [NSString alloc]init ...

  5. 洛谷 P2735 电网 Electric Fences Label:计算几何--皮克定理

    题目描述 在本题中,格点是指横纵坐标皆为整数的点. 为了圈养他的牛,农夫约翰(Farmer John)建造了一个三角形的电网.他从原点(0,0)牵出一根通电的电线,连接格点(n,m)(0<=n& ...

  6. HTML5新增的标签

    结构性元素<header><footer>定义页眉(与<head>不一样)和页脚 <section>定义section<article> 定 ...

  7. MySQL导出数据

    1.MySQL导出数据库 只导出数据库结构:选中数据库-->右键—>数据传输—>高级—>取消勾选记录选项.

  8. 使用TFHelp解析Html

    似乎是第一次使用TFHelp解析Html,也是第一次解析Html遇到挺多的难题,现在这里简单的总结一下,慢慢补充TFHelp的使用! https://github.com/topfunky/hpple ...

  9. 封装ajax(二)闭包的形式

    (function(){ var $=(function(){ function create(){ if(window.XMLHttpRequest){ var xhr=new XMLHttpReq ...

  10. plist文件里的"Bundle versions string, short" 跟 "Bundle version" 的区别及作用

    Bundle versions string, short:用于itunes上显示的版本号,即对外的版本,一般除了版本迭代外,不能随意更改. Bundle version:内部项目管理的版本号,是给程 ...