JavaScript抛出新错误无法按要求运行

时间:2018-07-31 09:00:52

标签: 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" >

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

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

1 个答案:

答案 0 :(得分:0)

三件事:

  1. 尝试捕获的范围不合适。
  2. 如果您使用的是import UIKit extension UITextField { @IBInspectable var paddingLeft: CGFloat { get { return leftView!.frame.size.width } set { let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height)) leftView = paddingView leftViewMode = .always } } @IBInspectable var paddingRight: CGFloat { get { return rightView!.frame.size.width } set { let paddingView = UIView(frame: CGRect(x: 0, y: 0, width: newValue, height: frame.size.height)) rightView = paddingView rightViewMode = .always } } } ,则应该使用new Error()来获取消息。
  3. 如果您想将值放入e.message,则只需使用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);
      }
    });
 });