打印自定义错误消息时异常处理中的“未定义”

时间:2017-04-28 16:36:34

标签: javascript

您好我的自定义错误消息“未定义”。为什么?我只想要错误信息。任何人都可以帮忙。

function divide() {
  let num = 2;
  let den = 0;
  try{
    if (den == 0){
      throw new Error("division invalid");
    }
    return Number(num/den);
  } catch(e){
    console.log(e.message);
  }
}
console.log(divide());

4 个答案:

答案 0 :(得分:2)

没有显式返回的函数,隐式返回undefined。您抛出错误,然后在catch块中没有返回任何内容。由于您没有返回值,因此会发送undefined

function divide() {
  let num = 2;
  let den = 0;
  try {
    if (den == 0) {
      throw new Error("division invalid");
     }
     return Number(num/den);
  } catch(e){
    console.log(e.message);
    return 'Can\'t divide by 0!';
  }
}

console.log(divide());

请注意,在此代码段中,我将在catch中返回一个字符串。永远不会调用行return Number(num/den);,因为存在错误。

答案 1 :(得分:1)

您可以将其返回到调用方法,而不是在函数中记录错误。

{{1}}

答案 2 :(得分:0)

Console.log()函数返回undefined。所以@Krypton建议做什么,尽管这仍然会导致未定义的仍然出现。但是嘿,至少它不那么明确,不是吗?

答案 3 :(得分:0)

您的代码工作绝对正确。我在我的控制台上测试了这个。 最可能的问题是您的控制台设置,目前控制台必须设置为仅显示错误。因此,将Chrome控制台输出更改为 详细 全部 。我附上了如何根据您的期望更改代码的设置和输出的快照。 Solution to your problem Click here

  

为了完整性:在当前版本的chrome中,设置不再位于底部,但可以在单击"过滤器"控制台选项卡顶部的图标(左起第二个图标)

您可以click here作进一步参考。

我希望这能解决你的问题。谢谢:))