位置: 编程技术 - 正文

解析Node.js异常处理中domain模块的使用方法(node解析前端formdata数据)

编辑:rootadmin

推荐整理分享解析Node.js异常处理中domain模块的使用方法(node解析前端formdata数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:nodejs html解析,node解析前端formdata数据,node解析前端formdata数据,nodejs 异常,nodejs 异常,nodejs异常处理,nodejs异常处理,nodejs解析路径的方法,内容如对您有帮助,希望把文章链接给更多的朋友!

NodeJS 提供了 domain 模块,可以简化异步代码的异常处理。在介绍该模块之前,我们需要首先理解“域”的概念。简单的讲,一个域就是一个 JS 运行环境,在一个运行环境中,如果一个异常没有被捕获,将作为一个全局异常被抛出。NodeJS 通过 process 对象提供了捕获全局异常的方法,示例代码如下

虽然全局异常有个地方可以捕获了,但是对于大多数异常,我们希望尽早捕获,并根据结果决定代码的执行路径。我们用以下 HTTP 服务器代码作为例子:

以上代码将请求对象交给异步函数处理后,再根据处理结果返回响应。这里采用了使用回调函数传递异常的方案,因此 async 函数内部如果再多几个异步函数调用的话,代码就变成上边这副鬼样子了。为了让代码好看点,我们可以在每处理一个请求时,使用 domain 模块创建一个子域(JS 子运行环境)。在子域内运行的代码可以随意抛出异常,而这些异常可以通过子域对象的 error 事件统一捕获。于是以上代码可以做如下改造:

解析Node.js异常处理中domain模块的使用方法(node解析前端formdata数据)

可以看到,我们使用.create方法创建了一个子域对象,并通过.run方法进入需要在子域中运行的代码的入口点。而位于子域中的异步函数回调函数由于不再需要捕获异常,代码一下子瘦身很多。

陷阱无论是通过 process 对象的 uncaughtException 事件捕获到全局异常,还是通过子域对象的 error 事件捕获到了子域异常,在 NodeJS 官方文档里都强烈建议处理完异常后立即重启程序,而不是让程序继续运行。按照官方文档的说法,发生异常后的程序处于一个不确定的运行状态,如果不立即退出的话,程序可能会发生严重内存泄漏,也可能表现得很奇怪。

但这里需要澄清一些事实。JS 本身的throw..try..catch异常处理机制并不会导致内存泄漏,也不会让程序的执行结果出乎意料,但 NodeJS 并不是存粹的 JS。NodeJS 里大量的 API 内部是用 C/C++ 实现的,因此 NodeJS 程序的运行过程中,代码执行路径穿梭于 JS 引擎内部和外部,而 JS 的异常抛出机制可能会打断正常的代码执行流程,导致 C/C++ 部分的代码表现异常,进而导致内存泄漏等问题。

因此,使用 uncaughtException 或 domain 捕获异常,代码执行路径里涉及到了 C/C++ 部分的代码时,如果不能确定是否会导致内存泄漏等问题,最好在处理完异常后重启程序比较妥当。而使用 try 语句捕获异常时一般捕获到的都是 JS 本身的异常,不用担心上诉问题。

nodejs修复ipa处理过的png图片 最近做项目遇到一个需求:解析apk和ipa包,然后把里面的icon上传到服务器。问题解析上传过程比较简单,我使用JSZip对apk和ipa进行解压,然后把找到里

Node.js开发者必须了解的4个JS要点 本文为开发者总结了4个Node.js要点。1.非阻塞(Non-blocking)或异步I/O由于Node.js一个服务器端框架,所以它主要工作之一是处理浏览器请求。在传统的I/O系统

nodejs 中模拟实现 emmiter 自定义事件 nodejs中模拟实现emmiter自定义事件!DOCTYPEhtmlhtmlheadmetacharset="UTF-8"title/titlescriptfunctionEmitter(){this.events={};//存放事件的地方}Emitter.prototype.on=function(type,cb){varev

标签: node解析前端formdata数据

本文链接地址:https://www.jiuchutong.com/biancheng/370674.html 转载请保留说明!

上一篇:剖析Node.js异步编程中的回调与代码设计模式(nodejs 异步)

下一篇:nodejs修复ipa处理过的png图片(nodejs不再维护)

  • 计算应纳税所得额时 不得扣除支出有哪些
  • 扣缴义务人和纳税人举例
  • 啤酒消费税在那里征收
  • 物流辅助服务属于什么费用
  • 垃圾袋发票类别是什么
  • 土地租赁合同要公证吗
  • 新个税聘用退休后怎么算
  • 非货币性资产交换补价大于25%的会计处理
  • 银行承兑汇票贴现利率一般多少
  • 应收外币账款如何入账
  • 车间管理人员工资总额占车间工资总额的10%
  • 应付税款法账务处理
  • 增值税普票遗失了怎么办
  • 国税退税需要多长时间
  • 固定资产清理的借贷方向表示什么
  • 补提以前年度税费应该计入
  • 计提增值税的账务处理小规模
  • 代运营公司流程
  • 预付账款如何计提折旧
  • 线上生活服务app有哪些
  • 支付的测试流程
  • 房地产企业前期物业费
  • win11系统怎么投屏
  • 每季度预缴所得税怎么算
  • 公司邮票报销
  • win10记事本怎么改字体颜色
  • 既征收消费税又征收增值税的是
  • vue3elementplus首页布局
  • php各大框架以及实现原理
  • php curl爬虫
  • laravel 5.1下php artisan migrate的使用注意事项总结
  • php自定义表单系统
  • 金碟软件如何查看明细账
  • 开发费用怎么入账
  • php邮箱验证示例怎么写
  • php的时间戳
  • 公司主营业务和经营范围的区别
  • 其他综合收益在资产负债表中如何填列
  • 招待费进项转出填表二哪里
  • 企业生产过程中执行标准要把握好以下原则
  • Price Comparison Script
  • 小规模纳税人开具增值税专用发票
  • 购买办公用品如何写摘要
  • sqlserver2005属于
  • 出口货物没有进项发票用什么平台申报
  • 其他应付什么意思
  • 坏账准备是资产减值损失吗
  • 小微企业减免附加税税率
  • 赠品当商品卖
  • 按工人工资比例结转制造费用会计科目
  • 费用报销单和费用核销单一样吗
  • 材料采购成本的计算分录
  • 流动资产周转率计算公式
  • 库存的周转天数
  • sql server数据库数据备份
  • OBJECTPROPERTY与sp_rename更改对象名称的介绍
  • win7系统安装完后启动不了
  • smsvchost.exe是什么文件 电脑中Svchost.exe病毒解决办法
  • win10防火墙打不开错误代码
  • win8如何设置vpn Win8如何建立VPN连接操作指南
  • perl date
  • 发现可疑文件autorun.inf
  • 对于不回微信的人,这样做,尽显高情商!
  • vue框架写淘宝购物车
  • bootstrap页头
  • jquery crud
  • shell提示
  • python关键字none
  • javascript+HTML5自定义元素播放焦点图动画
  • javascript中的函数包括内置函数和自定义函数
  • javascript边框
  • 很全面的成语
  • 浅析jQuery Ajax请求参数和返回数据的处理
  • js类的静态属性
  • 国家税务总局全国增值税查询
  • 国家税务系统电子税务局电话
  • 是否开具发票就要确认企业所得税收入?
  • 开票系统服务器设置
  • 买新房子需要交契税吗
  • 签订设计合同
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设