【问题标题】:c# how to stop exception from bubbling upc#如何阻止异常冒泡
【发布时间】:2017-08-14 12:05:00
【问题描述】:

当我的控制器中抛出异常时,动作会一次又一次地执行,当抛出错误时,这个循环正在进行。

 try
  {
                    LogManager.Info("Call:" + invocation.TargetType.Name + "::" + invocation.Method.Name);
                    var startTime = DateTime.Now;
                    invocation.Proceed();
                    var endTime = DateTime.Now;
                    LogManager.Info("CallEnd:" + invocation.TargetType.Name + "::" + invocation.Method.Name + " Execution Time(Milliseconds): " + (endTime - startTime).Milliseconds);
                }
                catch (Exception ex)
                {                
                    //HttpContext.Current.Request.Abort();
                    var builder = new StringBuilder();
                    var dataSource = ConfigurationManager.ConnectionStrings["dbMain"].ToString().Split(';')[0];

                    builder.AppendLine();
                    builder.AppendLine(string.Concat(Enumerable.Repeat(">", 50)));
                    builder.AppendLine("Server Time:-" + DateTime.Now);
                    //builder.AppendLine("Requested Url:" + HttpContext.Current.Request.Url);
                    builder.AppendLine(dataSource);
                    builder.AppendLine("Error at " + invocation.TargetType.Name + "::" + invocation.Method.Name + "(" + JsonConvert.SerializeObject(invocation.Arguments, Formatting.Indented) + ")");
                    builder.AppendLine(string.Concat(Enumerable.Repeat("-", 50)));
                    builder.AppendLine(JsonConvert.SerializeObject(ex, Formatting.Indented).Replace("\\n", System.Environment.NewLine));
                    builder.AppendLine(string.Concat(Enumerable.Repeat("<", 50)));

                    LogManager.Error(builder.ToString());
                    LogManager.SendMail(ex, builder.ToString());

                    throw;
                } 

【问题讨论】:

  • " 我想阻止异常冒泡并多次重新执行请求" X 4 -- 你是想成为 meta 还是什么?

标签: c#-4.0 exception-handling castle-dynamicproxy


【解决方案1】:

如果您希望异常停止冒泡,请不要重新抛出它。 在您的代码中有: “扔 ;”线。删除它。

【讨论】:

    猜你喜欢
    • 2015-01-24
    • 1970-01-01
    • 2023-03-31
    • 2013-01-18
    • 1970-01-01
    • 2015-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多