首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Node.js 的错误处理机制

ERROR简介 Node.js 的错误分为四类: 标准 JavaScript 错误,如 EvalError,SynctaxError,RangeError,ReferenceError,TypeError...,而且捕获的异常可能会造成程序停止 // 这样不会捕获异常: const fs = require('fs'); try { fs.readFile('/some/file/that/does-not-exist...catch (err) { // 在这处理错误 } 异步 API 分为两种处理方式:一种是 Node.js 回调风格的 API,前面已有介绍;另一种方式:如果一个对象是一个 EventEmitter ,...如 Stream,Event 等模块,调用这个对象的异步方法可以通过这个对象的 error 事件处理: const net = require('net'); const connection = net.connect...追踪栈信息 try { Error.stackTraceLimit = 15; const m = z++; } catch (e) { console.log(e.stack); } // ReferenceError

2K40

Node.js 多进程线程 —— 日志系统架构优化实践

发送端只发送单条 JSON 数据,服务端 JSON.parse 单条数据顺利处理消息;然而,接收端同时接受多条消息,便会出现错误,最终造成进程间通信超时: Uncaught SyntaxError...捕获的异常, 捕获的异常会导致进程退出并打印错误信息。...监听的错误事件,new EventEmitter().emit('error') 若没有监听 error 事件则会导致进程退出,处理方法同捕获的异常 未处理的信号,在向进程发送信号,若没有设置监听函数...捕获的异常,使用 try { ... } catch (e) { } 对异常进行捕获,并且可以设置 process.setUncaughtExceptionCaptureCallback(fn) 可以在有捕获异常时调用...这样,线程池分配任务,会分配给已经退出的线程,而已经退出的线程不具备处理任务的能力,因此造成进程间通信超时。

1.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

你必须掌握的 7 种 JavaScript 错误类型

2、 ReferenceError 引用错误 对变量/项目的引用被破坏,将引发此错误。 那是变量/项目不存在。...当在记录中找到环境值并提取并返回值,将以该变量的名称作为关键字搜索环境记录。 调用尚未定义的函数。 现在,当我们创建或定义一个没有赋值的变量。...将在env记录中搜索该变量,找到初始未定义,该赋值将被覆盖。...can't find it 注意:未定义的变量不会抛出ReferenceError,因为它存在于环境记录中只是它的值尚未设置。...当我们键入JS引擎可以理解的代码,会发生此错误。 解析期间,JS引擎捕获了此错误。 在JS引擎中,我们的代码经过不同的阶段,然后才能在终端上看到这些结果。

3.9K10

前端模块化基石:commonJS原理浅析

从 module.exports 到 require 假设我们在a文件里要使用b文件的某个变量,一般会这样做。 // a文件 const b = require('....复制代码 现在我们需要一个沙盒环境,这个沙盒环境要满足2个条件: iife在执行过程中遇到未定义变量,要禁止它沿着作用域链向上查找。...指定一个对象,iife在执行过程中遇到未定义变量,则在这个对象上查找。 那我们看看createSandbox里具体要怎么做。好家伙,第一行就涉及了两个冷门知识点。...而proxy的has捕获器就是专门捕获in操作的。 在has捕获器里我们看到,要查找的变量不在白名单上返回了true, 这代表在传入with的对象上查找啥,这个对象都会说:“有!...而要查找的变量在白名单上,这个对象就说:“这个真没有,去全局找吧”。哪怕这个对象上存在。 get捕获器就好理解了,代理读取属性的行为。

52410

你应该知道的7 个 JavaScript 原生错误类型

ReferenceError 对变量或项目的引用被破坏,将会引发此错误。那是变量或项目不存在。...将在环境记录中搜索该变量,发现它未定义,该赋值将被覆盖。...can't find it 注意:未定义的变量不会抛出 ReferenceError,因为它在于环境记录中的值尚未设置。 3. SyntaxError 这是最常见的错误。...当我们输入 JS 引擎不能理解的代码,就会发生这个错误。 JS 引擎在解析期间捕获了这个错误。在 JS 引擎中,我们的代码经历了不同的阶段,然后才能在终端上看到结果。... URI 编码或解码出现问题,会引发 URIError。 6. EvalError 使用全局 eval() 函数,这用于识别错误。

2.6K20

前端 JS 异常那些事

) TypeError – 不属于有效类型(上面举例的运行时异常) ReferenceError – 无效引用(严格模式下直接访问一个未定义的变量) RangeError – 数值超出有效范围 URIError...监听全局异常和捕获的 Promise 异常并进行相关处理 function onReject(e) { // ......于是 React16 就有了Error Boundary来用来捕获渲染错误的概念,在 React 新增了两个生命周期componentDidCatch和static getDerivedStateFromError...用于捕获渲染的错误,也仅能捕获上面提到的白屏异常(如异步错误等也是没有办法被捕获到),也就是说如果我们在Error Boundary中捕获到错误并上报,这个错误通常是非常严重的。...,从而避免和业务代码报错混淆; renderError renderError 只在开发者环境下工作, render 函数报错,其错误将会作为第二个参数传递到 renderError,renderError

9610

获取 NodeJS 程序退出码

如果由于错误情况需要终止 Node.js 进程,则抛出捕获的错误并允许进程相应地终止比调用 process.exit() 更安全,比如: import process from 'process';...process exited with code ${code}`; fs.writeSync(fd,info); console.log(info); }); NodeJS退出码 没有更多异步操作挂起...在其他情况下使用以下状态代码: 1 捕获的致命异常:存在捕获的异常,并且其没有被域或 'uncaughtException' 事件句柄处理。...6 非函数的内部异常句柄:存在捕获的异常,但内部致命异常句柄不知何故设置为非函数,无法调用。 7 内部异常句柄运行时失败:存在捕获的异常,并且内部致命异常句柄函数本身在尝试处理抛出错误。...8: 使用。 在以前版本的 NodeJS 中,退出码 8 有时表示捕获的异常。 9 无效参数:指定了未知选项,或者提供了需要值的选项而没有值。

3.4K10

浅析 NodeJS 多进程和集群

原因是主进程通过 send() 方法向多个子进程发送属于该主进程的一个服务对象的句柄,所以对于每一个子进程而言,它们在还原句柄之后,得到的服务对象是一样的,网络请求向服务端发起,进程服务是抢占式的,...const cluster = require('cluster'); const http = require('http'); const numCPUs = require('os').cpus(...进程守护# 捕获异常 当代码抛出了异常没有被捕获到时,进程将会退出,此时 Node.js 提供了 process.on('uncaughtException', handler) 接口来捕获它,但是一个...Worker 进程遇到捕获的异常,它已经处于一个不确定状态,此时我们应该让这个进程优雅退出: 关闭异常 Worker 进程所有的 TCP Server(将已有的连接快速断开,且不再接收新的连接),...crash 或者 OOM 被系统杀死,不像捕获异常发生我们还有机会让进程继续执行,只能够让当前进程直接退出,Master 立刻 fork 一个新的 Worker。

93920

JS常见的报错及异常捕获

并且将介绍几种捕获异常的方法。 注:本文使用的谷歌游览器验证,不同的游览器,报错可能会不一样。 正文 常见的错误类型 RangeError:标记一个错误,设置的数值超出相应的范围触发。...ReferenceError:引用类型错误,一个不存在的变量被引用时发生的错误。比如:console.log(a)。 SyntaxError:语法错误。比如 if(true) {。...: "x" is not defined 含义:“x”未定义 为什么报错?...当你引用一个没有定义的变量,抛出一个ReferenceError; 当你使用变量的时候,这个变量必须要声明,或者你可以确保它在你当前的脚本或作用域 (scope) 中可用。...访问或设置未定义(undefined)或null值的属性时会发生这种报错。

5.8K30

一篇文章教你如何捕获前端错误

e.g: 下图是使用了未定义的变量"foo",导致产生js运行时错误时的上报数据: ? 2、资源加载错误 这里的静态资源包括js、css以及image等。...如果某个节点出现问题导致某个静态资源无法访问,就需要能够捕获这种异常并进行上报,方便第一间解决问题。 e.g: 下图是图片资源不存在的上报数据: ?...3、未处理的promise错误 使用catch捕获的promise错误,往往都会存在比较大的风险。而编码时有可能覆盖的不够全面,因此有必要监控未处理的promise错误并进行上报。...像axios和jQuery等库就是在xhr上的封装,而有些情况也可能会使用原生的fetch,因此对这两种情况都要进行捕获。 e.g: 下图是xhr请求接口返回400捕获后的上报数据: ?...网站请求并执行一个托管在第三方域名下的脚本,就可能遇到该错误。最常见的情形是使用 CDN 托管 JS 资源。 其实这并不是一个 JavaScript Bug。

3.6K40
领券