【问题标题】:JavaScript throw new Error doesn't work as requiredJavaScript throw new Error 不能按要求工作
【发布时间】:2018-07-31 09:00:51
【问题描述】:

这不是我的实际代码,而是我正在尝试执行的示例。

<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" >

现在,当我尝试在加载时直接调用脚本中的函数时,它可以完美运行并在控制台中显示一条错误消息,而没有红色标记。但是,当我尝试通过单击按钮调用它时,它在控制台中显示为红色,说明“未捕获的错误:”。

我只需要将错误消息显示为“msg 1”。

【问题讨论】:

  • 您需要在事件侦听器中添加一个try/catch 块才能使其工作。
  • 真正归结为了解异步执行的含义......但不确定最好的欺骗目标是什么......
  • 您不需要“新错误”位,只需抛出字符串即可。

标签: javascript try-catch throw


【解决方案1】:

三件事:

  1. try catch 的范围不合适。
  2. 如果您使用的是new Error(),那么您应该使用e.message 来获取消息。
  3. 如果您想将值放入e,则只需使用throw "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" >

【讨论】:

    猜你喜欢
    • 2020-08-03
    • 2018-02-27
    • 1970-01-01
    • 2012-02-27
    • 2018-12-09
    • 2019-12-08
    相关资源
    最近更新 更多