在服务器端捕获所有JavaScript客户端错误

皮德拉姆

如何在chrome开发人员工具上捕获客户端代码中发生的任何异常(例如“暂停捕获的异常”)?

皮德拉姆

我找到了解决方案!

我已经使用了C#和MVC。

添加一个新类,以自定义您的js文件包,如下所示:

public class CustomScriptBundle : ScriptBundle
{
    public CustomScriptBundle(string virtualPath) : base(virtualPath)
    {
        Builder = new CustomScriptBundleBuilder();
    }

    public CustomScriptBundle(string virtualPath, string cdnPath)
        : base(virtualPath, cdnPath)
    {
        Builder = new CustomScriptBundleBuilder();
    }
}

并且,创建另一个类来更改js文件的内容,如下所示:

class CustomScriptBundleBuilder : IBundleBuilder
{
    private string Read(BundleFile file)
    {
        //read file
        FileInfo fileInfo = new FileInfo(HttpContext.Current.Server.MapPath(@file.IncludedVirtualPath));
        using (var reader = fileInfo.OpenText())
        {
            return reader.ReadToEnd();
        }
    }

    public string BuildBundleContent(Bundle bundle, BundleContext context, IEnumerable<BundleFile> files)
    {
        var content = new StringBuilder();

        foreach (var fileInfo in files)
        {
            var contents = new StringBuilder(Read(fileInfo));
            //a regular expersion to get catch blocks
            const string pattern = @"\bcatch\b(\s*)*\((?<errVariable>([^)])*)\)(\s*)*\{(?<blockContent>([^{}])*(\{([^}])*\})*([^}])*)\}";

            var regex = new Regex(pattern);
            var matches = regex.Matches(contents.ToString());

            for (var i = matches.Count - 1; i >= 0; i--) //from end to start! (to avoid loss index)
            {
                var match = matches[i];
                //catch( errVariable )
                var errVariable = match.Groups["errVariable"].ToString();
                //start index of catch block
                var blockContentIndex = match.Groups["blockContent"].Index;
                var hasContent = match.Groups["blockContent"].Length > 2;

                contents.Insert(blockContentIndex,
                          string.Format("if(customErrorLogging)customErrorLogging({0}){1}", errVariable, hasContent ? ";" : ""));
            }

            var parser = new JSParser(contents.ToString());
            var bundleValue = parser.Parse(parser.Settings).ToCode();

            content.Append(bundleValue);
            content.AppendLine(";");
        }

        return content.ToString();
    }
}

现在,将您的js文件包括在您的类的Application Bundles中:

BundleTable.Bundles.Add(new CustomScriptBundle("~/scripts/vendor").Include("~/scripts/any.js"));

最后,在一个新的js文件中,如下所述编写customErrorLogging函数,并将其添加到项目的主要html表单中:

"use strict";
var customErrorLogging = function (ex) {
    //do something
};

window.onerror = function (message, file, line, col, error) {
    customErrorLogging({
        message: message,
        file: file,
        line: line,
        col: col,
        error: error
    }, this);
    return true;
};

现在,您可以在应用程序中捕获所有异常并进行管理:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

客户端与服务器端模板(哪个?)

来自分类Dev

Mongodb服务器端与客户端处理

来自分类Dev

客户端服务器端模板nodejs

来自分类Dev

在服务器端访问客户端变量

来自分类Dev

服务器端或客户端渲染

来自分类Dev

客户端服务器端模板nodejs

来自分类Dev

在客户端委派服务器端验证

来自分类Dev

客户端数据到服务器端

来自分类Dev

如果服务器端未推送路由,如何使所有客户端流量通过OpenVPN?

来自分类Dev

AngularJS:服务器端记录客户端错误

来自分类Dev

“客户端JavaScript”,“服务器端JavaScript”和“ CoreJavaScript”之间的区别

来自分类Dev

访问服务器端javascript变量以使用客户端javascript进行操作

来自分类Dev

如何从服务器端C#代码触发客户端JavaScript?

来自分类Dev

asp.net/javascript创建cookie,创建客户端或服务器端的优势?

来自分类Dev

客户端和服务器端javascript中“ this”的值之间的差异

来自分类Dev

在JavaScript中的客户端调用服务器端变量

来自分类Dev

如何从服务器端C#代码触发客户端JavaScript?

来自分类Dev

客户端UI路由与服务器端路由有何不同

来自分类Dev

客户端对服务器端NTFS压缩有影响吗?

来自分类Dev

Nuxt.js:有条件的客户端/服务器端渲染

来自分类Dev

如何从客户端socket.emit服务器端socket.io捕获名称空间来源

来自分类Dev

如何模拟服务器响应-服务器端客户端

来自分类Dev

Java套接字服务器-客户端;卡在服务器端

来自分类Dev

分布式系统:引发客户端上服务器端抛出的错误

来自分类Dev

Devexpress MVC扩展。这些扩展是服务器端还是客户端端?

来自分类Dev

php的服务器端关联数组到html的客户端端

来自分类Dev

具有服务器端分页和客户端过滤

来自分类Dev

如何使用Socket.IO发出服务器端错误并接收有关错误客户端的详细信息?

来自分类Dev

将变量从服务器端控制器传递到客户端以在客户端 JavaScript 中使用

Related 相关文章

  1. 1

    客户端与服务器端模板(哪个?)

  2. 2

    Mongodb服务器端与客户端处理

  3. 3

    客户端服务器端模板nodejs

  4. 4

    在服务器端访问客户端变量

  5. 5

    服务器端或客户端渲染

  6. 6

    客户端服务器端模板nodejs

  7. 7

    在客户端委派服务器端验证

  8. 8

    客户端数据到服务器端

  9. 9

    如果服务器端未推送路由,如何使所有客户端流量通过OpenVPN?

  10. 10

    AngularJS:服务器端记录客户端错误

  11. 11

    “客户端JavaScript”,“服务器端JavaScript”和“ CoreJavaScript”之间的区别

  12. 12

    访问服务器端javascript变量以使用客户端javascript进行操作

  13. 13

    如何从服务器端C#代码触发客户端JavaScript?

  14. 14

    asp.net/javascript创建cookie,创建客户端或服务器端的优势?

  15. 15

    客户端和服务器端javascript中“ this”的值之间的差异

  16. 16

    在JavaScript中的客户端调用服务器端变量

  17. 17

    如何从服务器端C#代码触发客户端JavaScript?

  18. 18

    客户端UI路由与服务器端路由有何不同

  19. 19

    客户端对服务器端NTFS压缩有影响吗?

  20. 20

    Nuxt.js:有条件的客户端/服务器端渲染

  21. 21

    如何从客户端socket.emit服务器端socket.io捕获名称空间来源

  22. 22

    如何模拟服务器响应-服务器端客户端

  23. 23

    Java套接字服务器-客户端;卡在服务器端

  24. 24

    分布式系统:引发客户端上服务器端抛出的错误

  25. 25

    Devexpress MVC扩展。这些扩展是服务器端还是客户端端?

  26. 26

    php的服务器端关联数组到html的客户端端

  27. 27

    具有服务器端分页和客户端过滤

  28. 28

    如何使用Socket.IO发出服务器端错误并接收有关错误客户端的详细信息?

  29. 29

    将变量从服务器端控制器传递到客户端以在客户端 JavaScript 中使用

热门标签

归档