zoukankan      html  css  js  c++  java
  • 【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()); // 使用本地格式显示当前时间
        }
  • 相关阅读:
    eclipse中文乱码问题解决方案
    修改Tomcat的JDK目录
    Tomcat 5.5 修改服务器的侦听端口
    HTML DOM教程 27HTML DOM Button 对象
    HTML DOM教程 24HTML DOM Frameset 对象
    Navicat for MySQL v8.0.27 的注册码
    HTML DOM教程 25HTML DOM IFrame 对象
    Tomcat 5.5 的下载和安装
    android manifest相关属性
    ubuntu10.04 下 eclipse 小结
  • 原文地址:https://www.cnblogs.com/neil080320/p/6259986.html
Copyright © 2011-2022 走看看