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

yus*_*suf 1 c# parsing

我知道这听起来很奇怪,但我需要在每个方法中放置一个包装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);
            }
        }
Run Code Online (Sandbox Code Playgroud)

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

Sti*_*ack 40

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

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

  • 如果每次我不得不阻止某人这样做时我都有一美元......我的团队中有经验丰富的人认为这是要走的路,所以我可以理解erdogany正在经历的困境。去死吧……好的设计的敌人。 (2认同)

Sco*_*eke 12

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

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