Articles of try catch

我可以在Node.js的JavaScript中使用catch(如果是instanceof SyntaxError)吗?

我读了有关在MDN尝试捕获(如果E实例…)块,但是,在Node.js中尝试它时,我得到一个SyntaxError:意外的标记,如果。 如果这不起作用,是否有另一种方法来捕捉特定的exception,而不是可能发生的一切?

试图parsingJSON,而不会崩溃Node.js服务器

我正在使用支持Node.js开发一个项目,我也使用JSON通过Web套接字传递数据到客户端和从客户端。 我的问题是,如果一个无效的string被发送到服务器(很容易由用户搞乱JavaScript控制台),那么它会崩溃服务器,同时试图parsing它。 我用来防止这种情况的当前方法是使用try / catch语句。 我的问题是,是否有一个更正确的方法来检查一个string是否可以parsing? 另外,是使用try / catch语句的良好实践还是仅仅意味着debugging? 谢谢。

在抛出的对象中传递错误原因/如何处理现代JavaScript中的错误

我正在开发一个包含parsing器的小型Node.js包。 它一旦发现不可恢复的问题就会抛出。 我已经使用了Java多年,我已经习惯了大量的exception类。 但是这是JavaScript。 我想这是一个风格问题。 我的根本问题是如何通过错误原因赶上块。 我考虑为不同的错误原因创build不同的错误“类”,每个错误都关注每个问题的细节,或者将一个错误类作为属性来保存原因。 让我给你一个处理这两种错误的例子: catch(e) { if(e instanceof FirstError) { … } if(e instanceof SecondError) { … } } catch(err) { if(err instanceof AnError) { if(err.detail === 'becauseOfA') { … } if(err.detail === 'becauseOfB') { … } } … } 哪种方法比较好? 两者都可以工作,但我不喜欢第一个。 在我看来,许多课程都像一个巨大的开销。 编辑: 我同意使用callback(也在这里回答): // One class per error type […]

是否try-catch-finally块在node.js中同步?

我有一些代码运行在一个节点程序中的subprocess ,如下所示: try{ var data = fs.readFileSync(urlPath, {"encoding":"utf8"}); } catch (err) { console.log("Error reading url file…"); throw err; } finally { console.log("File read!"); var array = data.split("\n"); console.log("Found " + array.length + " urls"); 这个代码是从另一个节点程序调用的,需要等到这个文件中的所有操作完成 。 不幸的是,在执行finally代码块之前的任何代码之前,subprocess正在以代码0退出。 这让我相信即使try-catch-finally也是asynchronous的。 那是对的吗?

什么是Node.js域模块的替代scheme?

domain置模块 将被弃用: 稳定性:0 – 弃用 此模块正在等待弃用。 一旦更换API已经完成,这个模块将被完全弃用。 大多数最终用户不应该有理由使用这个模块。 绝对必须具有域提供的function的用户可能暂时依赖它,但是应该期望在将来不得不迁移到不同的解决scheme。 据此,目前他们并不真正推荐解决scheme。 但是如何实现一个类似于下面的function: var d = require('domain').create(); d.on('error', function(err) { console.log(err); }); d.run(function() { setTimeout(function () { throw new Error("Something went really wrong in async code."); }, 1000); }); 所以,这处理从asynchronous的东西引发的错误,但domain模块已被弃用。 如何将此代码迁移到更好的东西? 我的用例是我正在编写一个接受函数作为input的库,它运行该函数并显示结果(实际上,您可以将其视为unit testing库): myLib.it("should do something", function (done) { setTimeout(function () { // Some async code // […]

尝试catch的javascript node.js获取行号?

我正在使用try catch一个node.js脚本: try {} catch (err) {console.log(err)} 我得到这样的输出: { stack: [Getter/Setter], arguments: [ 'undefined' ], type: 'called_non_callable', message: [Getter/Setter] } 有没有一个简单的方法来使这个更多的信息? 包括行号和函数名称等?