2017-03-22 53 views
0

当在我的控制器中引发异常时,当循环正在进行时,动作的执行会一次又一次地执行。c#如何防止异常冒泡

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; 
       } 
+1

“我想停止冒泡并重复执行请求多次的异常”X 4 - 你是否想要元或什么? –

回答

0

如果你想让异常停止冒泡,不要重新抛出它。 在你的代码中有: “扔”;线。去掉它。