• JS处理前台页面的所有异常


    /// <reference path="../../Scripts/jquery-1.4.1-vsdoc.js" />

    /// <reference path="yzg.prototype.js" />

    /*

    作者 : 颜佐光

    时间 : 2012-4-5

    Email : yanzuoguang@yahoo.com.cn

    备注 : 本JS为颜佐光所编写,可以用于任何场景,也可以更改代码,但是不能更改或者去掉作者的名字和备注,否则将追究法律责任。

    */

    (function ($) {

        /***************************  start 核心框架处理函数  ***************************************/

        function Throw(name, message, info) {

            if (typeof message == "undefined") { message = name; name = ""; }

            name = name || "异常信息";

            message = message || "发生未知错误,请联系开发人员";

            var err = new Error();

            err.name = name;

            err.message = message;

            err.info = info;

            throw err;

        }

        function NameSpace(base, path, obj) {

            if (typeof base == "string" || typeof base == "number") {

                obj = path; path = base, base = undefined;

            }

            if (typeof base == "undefined") {

                base = window;

            }

            //将路径拆分为命名空间数组

            var paths = (typeof path == "string") ? path.split(".") : [path];

            //设置默认的命名空间为window

            var nameSpace = base;

            //设置已经处理过的命名空间路径

            var handlePaths = [];

            //循环处理路径中的每个节点

            while (paths.length > 0) {

                //提取该命名空间的单个节点名称

                var name = paths.shift();

                //验证是否已经存在对象,存在则拿历史对象处理(当路径结束时对源对象进行扩展),不存在则新建立对象(当路径结束时等于传入的对象)

                if (typeof nameSpace[name] != "undefined") {

                    nameSpace = nameSpace[name];

                    if (obj && paths.length == 0 && typeof nameSpace == "object") {

                        $.extend(nameSpace, obj);

                    }

                }

                else {

                    if (obj && paths.length == 0) {

                        nameSpace = nameSpace[name] = obj;

                    }

                    else {

                        nameSpace = nameSpace[name] = {};

                    }

                }

                //将路径写入已经处理的路径

                handlePaths.push(name);

                //将数据类型不正确时抛出异常

                if (typeof nameSpace != "object") {

                    Throw("路径错误", "发现路径[@path]已经存在数据,并且该数据的数据类型不为Object,不能进行命名空间扩展!".replace("@path", handlePaths.join(".")));

                }

            }

            return nameSpace;

        }

        /***************************  end 核心框架处理函数  ***************************************/

        /***************************  start 异常处理框架  ***************************************/

        function ErrorQueue() {

            this.errorQueue = [];

            this.errorHandle = [];

            this.Throw = function (name, message, info) {

                try {

                    Throw(name, message, info);

                } catch (e) {

                    var len = this.errorQueue.length;

                    this.errorQueue.push(e);

                    Throw("" + len);

                }

            };

            this.Get = function (obj) {

                var queueName = obj && (obj.message || obj);

                var index = parseInt(queueName);

                return this.errorQueue[index];

            };

            this.AddHandle = function (func) {

                if (typeof func == "function") {

                    this.errorHandle.push(func);

                }

            };

            this.DefaultHandle = function (name, msg, info, url, line) {

                alert("Url : " + url + " Line : " + line + " Name: " + name + " Msg: " + msg);

            };

            this.Handle = function (msg, url, line) {

                var e = this.Get(msg);

                var name = "异常信息";

                var info = null;

                if (e) {

                    msg = e.message;

                    name = e.name;

                    info = e.info;

                }

                try {

                    if (this.errorHandle.length == 0) {

                        throw new Error();

                    }

                    for (var i = 0; i < this.errorHandle.length; i++) {

                        var func = this.errorHandle[i];

                        if (typeof func == "function") {

                            func(name, msg, info, url, line);

                        }

                    }

                } catch (ex) {

                    this.DefaultHandle(name, msg, info, url, line);

                }

            };

        }

        var error = new ErrorQueue();

        window.onerror = function (msg, url, line) {

            error.Handle.call(error, msg, url, line);

        };

        /***************************  end 异常处理框架  ***************************************/

        var core = {

            Throw: Throw,

            NameSpace: NameSpace

        };

        NameSpace("yzg.core", core);

        NameSpace("yzg.error", error);

    })(jQuery);

    /*  

    //调用示例

    var error = yzg.error;

    error.AddHandle(function (name, msg, info, url, line) {

    $(document.body).append("<div>" + name + msg + info.id + "</div>");

    });

    error.Throw("高级异常", "异常信息", { id: "5" });

    */

  • 相关阅读:
    将ASCII字符串转换为UNICODE字符串
    GetLastError()返回值大全
    C++构造函数的调用
    DOM – 7.动态创建DOM + 8.innerText innerHTML value
    DOM
    DOM – 4.doucument属性
    用jquery操作xml文件
    請推薦有關網路的書
    Linux命令全称
    轻松架设时时监控工具Cacti
  • 原文地址:https://www.cnblogs.com/ruishuang208/p/js.html
Copyright © 2020-2023  润新知