Tag: exception处理

为什么VS代码在Promise中拒绝处理exception?

拿这个代码,我们有一个承诺,调用一个失败的函数,它应该把错误传递给承诺的catch方法。 从terminal上跑时它工作得很好。 但是,当通过vscode运行时,它在(1)处爆炸。 function failingFunc() { let undef = undefined; return undef.nope(); } let promise = new Promise((resolve, reject) => { resolve(failingFunc()); // (1) Explodes when run from vscode }); promise.then(v => {}).catch((e: Error) => { console.log(e.message); // (2) Prints when run from the terminal }); 为什么是这样? 关于页面的vscode: 版本1.14.2 提交cb82feb date2017-07-19T23:26:08.116Z 壳牌1.6.6 渲染器56.0.2924.87 节点7.4.0

获取调用的Nodejs中未捕获的exception错误

我正在使用NodeJS中的请求模块进行JSON调用,但正在得到 Error: Parse Error at Socket.socketOnData (http.js:1367:20) at TCP.onread (net.js:403:27) 并且该进程将会退出而没有得到回应。 我把一个 process.on('uncaughtException', function(e){ console.log(JSON.stringify(e, null, ' ')) }) 并得到这个作为痕迹.. Parse Error { "bytesParsed": 238, "code": "HPE_INVALID_CONSTANT" } 我尝试了围绕get调用尝试catch块,但没有奏效。 一旦我开始捕捉“uncaughtException”,我得到堆栈跟踪,然后调用JSON响应。 请帮助我确定为什么发生这种情况,以及如何有效地处理它。 我正在使用节点v0.8.12

我如何处理expressjs应用程序中的意外错误以避免停机?

我如何处理expressjs应用程序中的意外错误以避免停机? 首先,我想使用try-catch方法来处理意外的错误,但它似乎只适用于同步代码。 我发现其他方法是使用nodejs域模块,但它似乎被弃用。 我正在使用快递生成器提供的标准error handling中间件来处理错误。 我也在我的应用程序中使用npm forever模块。 像永远一样使用进程监视器是否足够,或者我应该采取任何不同的方法来处理意外错误?

需要系统地处理NodeJS项目中的错误/exception/拒绝

背景信息 我有一个新的项目,我将会提供可以安装的多个不同的(可选的)软件包,除了核心软件包(只有手册软件包)之外,所有这些软件包都可以被安装。 其他软件包只是与核心进行交互。 该项目只是为了跟踪数据列表(不是很具体,我知道,但这些细节是不需要的)。 附加软件包确定数据列表如何与之交互。 核心包只包含所有主要的JSfunction和数据库模型以及authentication。 其他的包裹和那些捆绑在一起。 比方说,你只想把它作为一个标准的网页,你可以安装webui包,这将绑定到核心 ,并创build一个web应用程序 如果你想创build一个API,你可以安装restapi包,它创build了RESTful接口; 您也可以安装spaui包,它将与RESTful接口进行交互,该接口从核心获取数据 这些插件包我会叫“外观”包。 所有你真正需要从上面推断出来的是核心是一个独立的包装外观包,它处理的核心function(数据库的东西,authentication,授权等) 问题 核心可以使用promises或callback函数,并且返回失败的exception,然后使用任何Facade包与核心交互将处理exception/错误(显示HTTP错误页面,返回RESTful错误结果等)。 由于处理错误的包不同于返回错误的包,因此需要有一个系统的方法来知道返回的错误types ,因此可以正确处理(EG:webui / restui包应该知道如果需要显示HTTP 500,HTTP 403,HTTP 409等)。 显然核心只是返回new Error('Something broke') ,那么外观包并不真正知道它是什么types的错误,除非他们把文本保存在某个地方,并且可以与错误代码相匹配。 题 什么是处理这个最好的方法? 我一直无法find任何完成这个我想要的东西.. 我最终开始了自己的尝试..(下图) 我的可能的解决scheme(如果这是足够的,只需确认) 我创build了一个新的AppErrorexceptiontypes,而不是用简单的string返回AppErrorexception,而是提供一个将该exception与错误消息,错误types等关联的错误代码 。 这是一个AppErrorexception的例子: exports.createThing = ( name, data ) => { return new Promise( ( res, rej ) => { if( doesItExist( name ) […]

如何减less数据图表,但保持极端

我有一个数据库,每隔10分钟就有一个月的数据集。 (所以每10分钟一个数据集) 现在我想在三个图表上显示数据:过去24小时,过去7天和过去30天。 数据如下所示: { "data" : 278, "date" : ISODate("2016-08-31T01:51:05.315Z") } { "data" : 627, "date" : ISODate("2016-08-31T01:51:06.361Z") } { "data" : 146, "date" : ISODate("2016-08-31T01:51:07.938Z") } // etc 对于24小时图,我只是输出最后24小时的数据,这很容易。 对于其他图表,我减less了数据: const data = {}; //data from database let newData = []; const interval = 7; //for 7 days the interval is 7, for […]

节点:从来没有使用try-catch?

我在Node.js中编写数据处理系统 数据部分是用户提供或来自外部来源,所以 他们可能会以各种方式变形; 他们可能是模棱两可的; 他们可以相互矛盾。 在这种情况下,我通常要提醒用户,然后: 如果系统在交互模式下使用(即数据inputREPL),处理应该停止,build议一些动作并等待用户的决定。 如果它运行在批处理模式(即数据来自文件,Web服务或类似的来源),我想继续处理丢弃这些信息。 当然警告用户的方法也取决于模式。 我认为例外是解决这类问题的正确scheme,因为: 格式不正确或相互矛盾的数据应该是一个例外 ; 这样,特殊行为的代码将与通常的stream程明显分离; 我将能够将例外提升到更高的层次,在这个层面上我可以决定究竟干什么。 于是我开始寻找指南,发现了两件相关的事情: 此评论由@Raynos Node.js最佳实践exception处理 ; http://codebetter.com/karlseguin/2010/01/25/don-t-use-try-catch/ 。 前者没有进一步解释。 后来我明白,但我认为这不是我的情况。 你如何解决这个问题? 我正在寻找一般的方法,不一定是平台或语言特定的…或JavaScript的尝试抓住有什么特别邪恶?

如何在JavaScript中检查特定的exception?

我正在编写一个Node.js应用程序,并且在其代码块之内可能会引发各种exception(通过我称之为第三方代码)。 现在我想对这些例外做出反应,因此我这样做: try { // Call 3rd party code } catch (e) { // Handle e } 基本上,这工作正常,但…我如何区别不同的例外? 不幸的是,他们都有构造函数的Error ,所以这是不可行的。 我可以使用message属性,但当然这不是最好的方式(因为我依赖于事实的消息将永远不会改变,这是 – 恕我直言,更可能比构造函数的变化)。 有任何想法吗? PS:具体地说 – 我需要在尝试执行tls.connect时对SSL错误做出反应。 如何检测到SSL错误?

在javascript / nodejs中抛出exception真的那么糟糕?

我正在阅读有关nodejs中的error handling,在阅读本文档时遇到了一些令人不安的事情: http://nodejs.org/api/domain.html 它说:“通过JavaScript的投掷方式的本质,几乎没有任何方法可以安全地”拾取你离开的地方“,而不会泄露引用,或者创build其他一些不明确的状态。 这听起来非常可怕。 这是真的说任何时候抛出exception,我需要closures线程? 我觉得我在这里错过了一些东西。

在承诺中引发的exception不会显示

我正在开发一个严重依赖于Promise的节点模块。 出于某种原因,当Promise代码中出现exception(例如“undefined不是函数”)时,exception消息不会显示在控制台中 – promise链似乎停止了,没有任何反馈,我只能做猜猜是什么原因造成的。 我如何强制Node显示所有exception?

优雅地处理NodeJS中subprocess中的错误

我使用节点进行服务器端处理 – 通过大数据文件,并插入数据库。 这将在cron工作上每晚进行。 在程序中有几项任务需要完成。 我已经设置了child_process以便正确执行这些不同的任务。 不过,我想整个事情都有一个error handling部分。 如果出现任何问题,我想寄一封电子邮件给我,让我知道。 当我看到这个,我认为它会发现在subprocess中的错误,并允许我发送一个电子邮件的问题。 process.on('error', function (err) { console.log("Error running Scripts") sendErr(err); }); 但是我很快发现,这只会在产生过程中捕获错误,而不是在实际执行中。 但后来我发现了uncaughtException事件,并用uncaughtExceptionreplace了上面代码中的error 。 不幸的是,它没有按照我所希望的那样工作,代码没有运行,而且电子邮件也没有发送。 有谁知道如何做到这一点,或看看我做错了什么。 这是我目前的代码 var process = childProcess.fork(scriptName, {cwd:scriptWorkingDirectory}); process.on('uncaughtException', function (err) { console.log("Error running Scripts") sendErr(err); });