Javascript &引用;“未定义”;在打印自定义错误消息时的异常处理中
嗨,我收到一条“未定义”的自定义错误消息。为什么?我只想要一条错误信息。请任何人帮忙Javascript &引用;“未定义”;在打印自定义错误消息时的异常处理中,javascript,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); } } consol
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());
没有显式返回的函数,隐式返回
undefined
。您正在抛出一个错误,然后在catch
块中不返回任何内容。由于您没有返回值,它将发送未定义的
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
中返回了一个字符串。行返回编号(num/den)从未调用code>,因为出现错误。没有显式返回的函数,隐式返回未定义的。您正在抛出一个错误,然后在catch
块中不返回任何内容。由于您没有返回值,它将发送未定义的
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
中返回了一个字符串。行返回编号(num/den)代码>从未被调用,因为发生了错误。您可以将错误返回到调用方法,而不是记录在函数中
function divide(){
设num=2;
设den=0;
试一试{
如果(den==0){
抛出新错误(“除法无效”);
}
返回编号(num/den);
}捕获(e){
返回e.message;
}
}
log(divide())代码>您可以将错误返回给调用方法,而不是在函数中记录错误
function divide(){
设num=2;
设den=0;
试一试{
如果(den==0){
抛出新错误(“除法无效”);
}
返回编号(num/den);
}捕获(e){
返回e.message;
}
}
log(divide())
Console.log()函数返回未定义的。所以,按照@Krypton的建议去做,尽管这仍然会导致未定义的元素出现。但是,嘿,至少少了一个未定义的,不是吗?Console.log()函数返回未定义的。所以,按照@Krypton的建议去做,尽管这仍然会导致未定义的元素出现。但是,嘿,至少它少了一个未定义的,不是吗?您的代码工作完全正确。我已经在我的控制台上测试过了。
最可能的问题是您的控制台设置,当前必须将控制台设置为仅显示错误。因此,将chrome控制台输出更改为Verbose或All。我附上快照如何改变设置和输出您的代码按照您的期望。
完整性:在当前版本的chrome中,该设置不再位于底部,而是可以在单击控制台选项卡顶部的“过滤器”图标(左侧第二个图标)时找到
你可以参考一下
我希望这能解决你的问题。谢谢:)您的代码工作完全正确。我已经在我的控制台上测试过了。
最可能的问题是您的控制台设置,当前必须将控制台设置为仅显示错误。因此,将chrome控制台输出更改为Verbose或All。我附上快照如何改变设置和输出您的代码按照您的期望。
完整性:在当前版本的chrome中,该设置不再位于底部,而是可以在单击控制台选项卡顶部的“过滤器”图标(左侧第二个图标)时找到
你可以参考一下
我希望这能解决你的问题。谢谢:)console.log()是否也返回未定义?由于您要进行两次控制台日志记录,因此解释了为什么有两个未定义的返回doesn不是console.log()也返回未定义的?而且,由于控制台日志记录两次,因此解释了为什么有两个未定义的returnsthank。我找到了解决办法。问题是,我正在为divide函数执行一个console.log,它抛出了一个未定义的.谢谢。我找到了解决办法。问题是我正在为divide函数执行一个console.log,它抛出了一个未定义的。