浅析Node是如何进行错误处理的

node是对错误处理要求比较高的语言,假如对错误处理没有到位可能会造成程序进程退出

在这里插入图片描述

01 前言


错误处理是程序中一个重要的部分,也是判断你的程序是否专业的标准。一般来说我们写程序的时候都会选择使用try…catch来进行错误捕获,或者有时候我们会使用throw进行错误抛出,这是都是常用的错误捕获方法。但是我们在进行node进行开发的时候就会接触到异步过程的中的错误处理。

我们知道在node开发的时候会运用到很多第三方的模块,比如我们经常会使用最大的包管理工具npm,里面下载的包都会放到我们项目当中的node_modules里面,我们打开可以看到里面包含的文件很多,代码量也是巨大的。这里面就会有很多的bug隐患在里面,这时候使用错误捕获就非常有用了。

其实我们一开始想到的就是在全局范围内进行错误的监听,node提供了一个uncaughtException捕获异常,但是这种方法我们会难以定位到错误的发生位置。不应该把该函数当成万能的捕获模块,而是最后的解决方案。
在这里插入图片描述

02 Error模块


Error定义了Node中常见的错误类型,我们可以使用Error进行错误的抛出。Error模块里面包含了一个堆栈轨迹用于描述Error是从哪里产生的,一般来说我们可以准确知道错误发生在哪一部分的代码当中,根据错误的描述信息可以快速定位到错误。

var fs = require("fs");
fs.readFile("file",function(err,data){
   
	if(err){
   
		throw new Error("Error!")
	}
})

Node程序中产生的所有Error都是使用Error类的实例或者继承自Error类。我们在程序代码不中不仅可以使用回调函数自带的Error模块,而且我们可以显示第捕获错误。比如当你知道逻辑代码运行都某一部分是不对的,应该进行错误的捕获和提醒,你就可以使用:

throw new Error("自定义错误信息!")

03 错误捕获方式


接下来就简单介绍一下Node中我们是如何进行错误捕获的,总的来说我们可以有以下三种方式,try/catch、callback、event。之前我们常用的try/catch方式只适用于同步的调用情况,但是我们知道node中会出现很多的异步调用方式。

try/catch

首先我们应该了解的是在异步操作当中该方法是无法捕获错误的,主要原因就是因为异步调用返回时,代码的上下文已经改变,回调函数当中的代码已经脱离了try/catch的范围,所以是无法捕获的。

同步调用情况:

//这里可以捕获
try{
   
	throw new Error("这里出错了!");
}catch(e){
   
	console.log(e)
}

异步调用情况:

t
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值