这不是我的实际代码,而是我尝试执行的示例。
<script>
try {
function x(){
throw new Error('msg 1!');
}
function y(){
throw new Error('msg 2!');
}
//x();
function call(){
x();
}
$(document).ready(function(){
var btn = document.getElementById('callbtn');
btn.addEventListener("click",function(){
call();
});
});
//call();
} catch (e) {
console.log(e);
}
</script>
<input type="button" id="callbtn" value="button" >
现在,当我尝试在加载时直接调用脚本中的函数时,它运行良好,并在控制台中显示一条错误消息,而没有红色注释。但是,当我尝试通过单击按钮调用它时,它在控制台中显示红色,指出“ Uncaught Error :”。
我只需将错误消息显示为“msg 1”。
最佳答案
三件事:
- try catch 的范围不合适。
- 如果您使用
new Error()
,那么您应该使用e.message
来获取消息。 - 如果您想将值获取到
e
,那么只需使用抛出“message”
function x(){
throw new Error("MSG 1");
}
function y(){
throw "MSG 2";
}
//x();
function call(){
x();
}
function call1(){
y();
}
$(document).ready(function(){
var btn = document.getElementById('callbtn');
var btn1 = document.getElementById('callbtn1');
btn.addEventListener("click",function(){
try{
call();
}
catch(e){
console.log("From X...", e.message);
}
});
btn1.addEventListener("click",function(){
try{
call1();
}
catch(e){
console.log("From Y...", e);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="button" id="callbtn" value="button For X" >
<input type="button" id="callbtn1" value="button For Y" >
关于JavaScript 抛出新错误无法按要求工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51609450/