• 【repost】JS中的异常处理方法分享


    我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法

    js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要不用户体验不好)

    复制代码代码如下:

    window.onerror=function(){return true;} 




    下面是为了获取js异常信息,方便开发者找回问题

    1,try...catch...

    复制代码代码如下:

    <script type="text/javascript">
    var txt=""
    function message()
    {
    try
       {
       adddlert("Welcome guest!")
       }
    catch(err)
       {
         txt="本页中存在错误。 "
         txt+="点击“确定”继续查看本页, "
         txt+="点击“取消”返回首页。 "
         if(!confirm(txt))
             {
             document.location.href="/index.html"
             }
       }
    }
    </script>

    2 ,throw

    复制代码代码如下:

    <script type="text/javascript">
    var x=prompt("请输入 0 至 10 之间的数:","")
    try
    {
    if(x>10)
      throw "Err1"
    else if(x<0)
      throw "Err2"
    else if(isNaN(x))
      throw "Err3"
    }
    catch(er)
    {
    if(er=="Err1")
      alert("错误!该值太大!")
    if(er == "Err2")
      alert("错误!该值太小!")
    if(er == "Err3")
      alert("错误!该值不是数字!")
    }
    </script>

    3,onerror:

    复制代码代码如下:

    <script type="text/javascript">
    onerror=handleErr
    var txt=""

    function handleErr(msg,url,l)
    {
    txt="本页中存在错误。 "
    txt+="错误:" + msg + " "
    txt+="URL: " + url + " "
    txt+="行:" + l + " "
    txt+="点击“确定”继续。 "
    alert(txt)
    return true
    }

    function message()
    {
    adddlert("Welcome guest!")
    }
    </script>



    js中的异常处理

    在JavaScript可以使用try...catch来进行异常处理。例如:   

    try { foo.bar();} catch (e) { alert(e.name + ": " + e.message);} 
    目前我们可能得到的系统异常主要包含以下6种:

    EvalError: raised when an error occurs executing code in eval()  
    RangeError: raised when a numeric variable or parameter is outside of its valid range  
    ReferenceError: raised when de-referencing an invalid reference  
    SyntaxError: raised when a syntax error occurs while parsing code in eval()  
    TypeError: raised when a variable or parameter is not a valid type  
    URIError: raised when encodeURI() or decodeURI() are passed invalid parameters  
    上面的六种异常对象都继承自Error对象。他们都支持以下两种构造方法: 

    new Error();new Error("异常信息"); 
    手工抛出异常的方法如下:

    复制代码代码如下:

    try { 
    throw new Error("Whoops!");}
    catch (e) { 
    alert(e.name + ": " + e.message);} 

    如要判断异常信息的类型,可在catch中进行判断:



    复制代码代码如下:

    try {
    foo.bar();
    } catch (e) { 
    if (e instanceof EvalError) {  
    alert(e.name + ":" + e.message); 
    }  else if (e instanceof RangeError) {
    alert(e.name + ": " + e.message); }  
    // etc 

    Error具有下面一些主要属性:

    description: 错误描述 (仅IE可用).  
    fileName: 出错的文件名 (仅Mozilla可用).  
    lineNumber: 出错的行数 (仅Mozilla可用).  
    message: 错误信息 (在IE下同description)  
    name: 错误类型.  
    number: 错误代码 (仅IE可用).  
    stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用).  
    因此为了更好的了解错误信息我们可以将catch部分改为如下形式:   
     

    复制代码代码如下:

    try {
        foo.bar();
    } catch(e) {
        if (browserType != BROWSER_IE) {
            alert("name: " + e.name + "message: " + e.message + "lineNumber: " + e.lineNumber + "fileName: " + e.fileName + "stack: " + e.stack);
        } else {
            alert("name: " + e.name + "errorNumber: " + (e.number & 0xFFFF) + "message: " + e.message ");         } } "

    JavaScript中的throw命令事实上可以抛出任何对象,并且我们可以在catch接受到此对象。例如:

    复制代码代码如下:

    try {
        throw new Date(); // 抛出当前时间对象 } catch (e) { alert(e.toLocaleString()); // 使用本地格式显示当前时间
        }
  • 相关阅读:
    202103226-1 编程作业
    阅读任务
    1 20210309-1 准备工作
    20210405-1 案例分析作业
    第一周作业
    20210309-2 阅读任务
    20210309-1 准备工作
    编程作业
    阅读任务
    准备工作
  • 原文地址:https://www.cnblogs.com/neil080320/p/6259986.html
Copyright © 2020-2023  润新知