如何使用Javascript正确处理错误?

如何使用Javascript正确处理错误?,javascript,linux,node.js,Javascript,Linux,Node.js,当我想发送并使用Javascript出错时,我会: 抛出新错误() 它可以工作,但如果我传递一个数字,例如: 抛出新错误(500) 结果是: 误差:500 其中“Error:”是一个字符串 我有一个处理这个错误的函数,这个函数必须知道错误的代码,如何检索它?我必须解析字符串吗?:-( 谢谢。如果我明白你说的话,用一些RegExp提取数字?如果我明白你说的话,用一些RegExp提取数字?错误实例有一个消息属性,这是你应该分析的,而不是它打印到控制台的内容(即Error.prototype.toSt

当我想发送并使用Javascript出错时,我会:

抛出新错误()

它可以工作,但如果我传递一个数字,例如:

抛出新错误(500)

结果是:

误差:500

其中“Error:”是一个字符串

我有一个处理这个错误的函数,这个函数必须知道错误的代码,如何检索它?我必须解析字符串吗?:-(


谢谢。

如果我明白你说的话,用一些RegExp提取数字?

如果我明白你说的话,用一些RegExp提取数字?

错误实例有一个
消息
属性,这是你应该分析的,而不是它打印到控制台的内容(即
Error.prototype.toString
).

错误实例有一个
消息
属性,这是您应该分析的,而不是它打印到控制台中的内容(即
Error.prototype.toString
)。

如果以这种方式抛出错误,括号之间的文本将成为错误消息。您还可以使用


一个非常有用的链接:

如果以这种方式抛出错误,括号之间的文本将成为错误消息。您也可以使用

一个非常有用的链接:

请参阅-错误消息始终是一个字符串。即使您向其传递一个数字,它也会隐式转换为字符串

Error:500
Error
对象的默认字符串表示形式-如果您将此对象转换为字符串或直接调用
Error.toString()
,则会得到此值。如果您对错误消息感兴趣,则应直接访问消息-
parseInt(Error.message,10)
应该可以。

请参阅-错误消息始终是一个字符串。即使向其传递数字,它也会隐式转换为字符串


Error:500
Error
对象的默认字符串表示形式-如果您将此对象转换为字符串或直接调用
Error.toString()
,则会得到此值。如果您对错误消息感兴趣,则应直接访问消息-
parseInt(Error.message,10)
应该可以。

我强烈建议不要抛出错误。Try-catch很昂贵,一个错误就意味着服务器关闭

我建议您使用事件方法,包括EventEmitter是您的大部分代码


这样您就可以执行此操作了。发出(“错误”,新错误(500))
我强烈建议不要抛出错误。Try-catch非常昂贵,一个失误就意味着您的服务器将关闭

我建议您使用事件方法,包括EventEmitter是您的大部分代码


这样,您就可以执行此操作。发出(“错误”,新错误(500))
您实际上不需要使用error对象。您只需编写
抛出
,后跟希望被catch块捕获的任何内容即可。 这个小代码片段在警报框中显示500

function throwError(msg){
    throw msg;
}
try{
    throwError(500);
}catch(e){
    alert(e);
}

如果您使用
typeof
测试
e
,它将返回数字。

您实际上不需要使用错误对象。您只需编写
抛出
,后跟希望被catch块捕获的内容即可。 这个小代码片段在警报框中显示500

function throwError(msg){
    throw msg;
}
try{
    throwError(500);
}catch(e){
    alert(e);
}

如果你用
typeof
测试
e
,它会返回数字。

你的问题是指一般的Javascript,还是特别指使用node.js在服务器上运行的Javascript?如果特别是关于node.js,那么我理解下面Raynos的答案。否则,我看不出为什么用try/catch块滑动会关闭t服务器。在客户端,我发现抛出错误并在try/catch块中捕获它们是必不可少的。你的问题是指Javascript,还是具体指使用node.js在服务器上运行的Javascript?如果是关于node.js的,那么我理解下面Raynos的回答。否则,我不明白为什么要在尝试时犯错误/catch块将关闭服务器。在客户端,我发现抛出错误并在try/catch块中捕获它们是必不可少的。请参见上面的我的答案。它显示您可以直接传递一个数字以抛出并捕获它,作为catch块中的一个数字。请参见上面的我的答案。它显示您可以直接传递一个数字以抛出并捕获它在catch块中有一个数字