当前位置:  开发笔记 > 编程语言 > 正文

解析C#,查找方法并将try/catch放到所有方法中

如何解决《解析C#,查找方法并将try/catch放到所有方法中》经验,为你挑选了2个好方法。

我知道这听起来很奇怪,但我需要在每个方法中放置一个包装try catch块来捕获所有异常.我们有数千种方法,我需要以自动方式完成.你有什么建议?

我打算解析所有cs文件并检测方法,并在应用程序中插入try catch块.你能告诉我任何我可以轻松使用的解析器吗?或任何有助于我的事......

每种方法都有其独特的数字,如5006

public static LogEntry Authenticate(....)
        {
            LogEntry logEntry = null;
            try
            {
                ....
                return logEntry;
            }

            catch (CompanyException)
            {
                throw;
            }

            catch (Exception ex)
            {
                logEntry = new LogEntry(
                    "5006",
                    RC.GetString("5006"), EventLogEntryType.Error,
                    LogEntryCategory.Foo);

                throw new CompanyException(logEntry, ex);
            }
        }

我为此创造了这个; http://thinkoutofthenet.com/index.php/2009/01/12/batch-code-method-manipulation/



1> StingyJack..:

不要做.口袋妖怪("必须全部捕获")错误处理没有充分的理由.

编辑:几年后,需要稍作修改.我会说"至少不要手动做".使用AOP工具或Weaver(如PostSharp或Fody)将其应用于最终结果代码,但请务必考虑其他有用的跟踪或诊断数据点,如捕获执行时间,输入参数,输出参数等.



2> Scott Willek..:

好吧,如果你必须这样做,那么你必须.但是,您可能会尝试与强迫您执行此操作的人交谈,以允许您使用AppDomain类的UnhandledException事件.在向用户报告之前,它会向您提供有关任何方法中每个未捕获异常的通知.由于您还可以从异常对象获取堆栈跟踪,因此您将能够确切地确定每个异常发生的位置.它比使用异常处理程序装配代码要好得多.

话虽如此,如果我必须这样做,我会使用一些正则表达式来识别每个方法的开始和结束,并使用它来在任何地方插入一些异常处理程序.为此案例编写正则表达式的技巧将在此处的MSDN文档中详细说明Balancing Group Definition .此处还有一个使用平衡组的相关示例.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有