JavaScript 抛出新错误无法按要求工作

标签 javascript try-catch throw

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

<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”。

最佳答案

三件事:

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

相关文章:

javascript - 对象数组的客户端全文搜索

c# - C#“使用” block 并捕获异常

c++ - 如何在 cppunit 中断言语句抛出 Excp1 或 Excp2 类型的异常?

javascript - 是否可以为 HTML Jquery 中可编辑的内容编写自己的热键?

php - jQuery 不刷新 IE 中的选项卡内容

java - 如何让这个 try catch 循环直到不再出现错误?

c++ - 从构造函数中抛出异常

javascript - Jest 的匹配器错误 : received value must be a function

javascript - 用 window.find() 匹配所有出现的地方

java - Java 中的 try 是做什么的?