zoukankan      html  css  js  c++  java
  • javascript的错误处理

    1 onerror事件,实例代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Demo2.aspx.cs" Inherits="WebApplication5.Demo2" %>

    <script type="text/javascript">
    function HandleError(sMessage,sURL,sLine) {
    alert("出错了. "+"消息:"+sMessage+" URL:"+sURL+" 出错行号:"+sLine);
    return true;
    }
    window.onerror = HandleError;


    </script>
    <body onload="HandleLoad()"></body>

    2 try ... catch... finally ,实例代码如下:

    <script type="text/javascript">
    try
    {
    //alert("ok");
    windows.open("about:blank");
    }
    catch (exception) {
    alert("an error processed");
    }
    finally {
    alert("finally");
    }

    alert("ok");
    </script>

    注意:与JAVA/C#语言不同的是,不支持多重catch语句,但支持嵌套catch语句

    实例代码如下:

    <script type="text/javascript">
    try
    {
    var a = document.getElementById("txtUser");
    alert(a.value);
    }
    catch (ex) {
    try
    {
    alert(ex.message);
    }
    catch (ex) {
    alert(ex.message);
    }
    }
    </script>

    错误类型判断

    方法1.通过name属性判断;

    方法2:通过instanceof操作符

    实例代码如下:

    <script type="text/javascript">
    try
    {
    var scriptStr="var a=0;var b=1;var c=a++b;alert(c)";
    eval(scriptStr);
    }
    catch (ex) {
    if (ex instanceof SyntaxError) {
    alert("语法出错了");
    }
    }
    </script>

    抛出异常

    ECMAScript还引入throw语句,用于抛出异常,语法如下:

    throw error_object,

    error_object可以是字符串,数字,布尔值或是实际的对象,如

    throw "an error occurred";

    throw 5009

    throw true;

    throw new Object();

    throw new Error();

    throw new Error("error");

    throw new Error(10001,"error");

    自定义异常:实例代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="js自定义异常.aspx.cs" Inherits="WebApplication5.js自定义异常" %>

    <!DOCTYPE html>

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
    <title></title>
    <script type="text/javascript">
    var EmailError = new Error(1001, "Email格式非法");
    EmailError.name = "EmailFormatError";
    EmailError.writeLog = function (funcname) {
    var logstr = "error-code:" + this.number + " " + "error-message:" + this.message + " " + "error-type:" + this.name + " " + "error-func:" + funcname + " " + "error-time:" + (new Date()).toString();
    alert(logstr);
    }

    function calc() {
    var obj = document.getElementById("txtEmail");
    try{
    if(obj.value.indexOf("@")==-1)
    {
    throw EmailError;
    }
    else
    {
    alert("验证通过");
    }
    }
    catch (ex) {
    ex.writeLog("calc");
    }

    }
    </script>
    </head>
    <body>
    <form id="form1" runat="server">
    <div>
    <input type="text" id="txtEmail" />
    <input type="button" id="btnCalc" value="Calc" onclick="calc()" />
    </div>
    </form>
    </body>
    </html>

  • 相关阅读:
    回调函数(callback)是什么?
    类和对象的关系
    前端性能优化十四个规则:
    响应时间过长而导致网页问题的原因?
    给老爸更换电脑
    Notes for "Python in a Nutshell"
    Debian Jessie升级至Stretch小记
    将LibreOffice文档转换为豆瓣日记
    将Emacs Org任务树导出至Freeplane思维导图
    GNU/Linux下Freeplane的界面渲染问题
  • 原文地址:https://www.cnblogs.com/klsw/p/5323108.html
Copyright © 2011-2022 走看看