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

时间:2011-07-01 10:23:51

标签: javascript linux node.js

当我想发送和使用Javascript时出错:

  

抛出新的错误()

它有效,但如果我传递一个数字,例如:

  

抛出新错误(500)

结果是:

  

错误:500

其中'错误:'是一个字符串。

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

谢谢。

6 个答案:

答案 0 :(得分:4)

如果以这种方式抛出错误,括号内的文本将成为错误消息。您也可以使用a custom Error Object投掷。

一个非常有用的链接:The art of throwing JavaScript errors

答案 1 :(得分:1)

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

答案 2 :(得分:1)

请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error - 错误消息始终是字符串。即使你传递一个数字,它也会被隐式转换为字符串。

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

答案 3 :(得分:1)

我强烈建议不要抛出错误。尝试捕获是昂贵的,一次滑倒将意味着您的服务器关闭。

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

这样你就可以this.emit("error", new Error(500))

答案 4 :(得分:0)

如果我得到你所说的,请使用一些RegExp提取数字?

答案 5 :(得分:0)

您实际上不需要使用Error对象。你可以写throw,然后写一个你想要被catch块捕获的东西。 这个小代码片段在警告框中显示500个。

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

如果您使用etypeof进行测试,则会返回数字。