CSFrameworkV6 - .NET敏捷开发之道 - Exception异常扩展类
作者:C/S框架网|www.csframewo  发布日期:2023/03/15 12:30:49
  CSFrameworkV6 - .NET敏捷开发之道 - Exception异常扩展类

BizException异常扩展类

该类可以显示系统异常详情,包括【异常类型】、【异常信息】、【异常方法】、【堆栈调用】以及【EF内部异常】 DbEntityValidationException异常。

开发人员根据异常提示消息定位问题快速解决问题,提高开发效率!


贴图图片-异常扩展类



Exception扩展类


C# Code:

/// <summary>
/// www.csframework.com .NET敏捷开发之道
/// </summary>
public static class EFExceptionExtension
{
  
/// <summary>
  
/// 获取异常信息
  
/// </summary>
  
/// <param name="ex">异常实例</param>
  
/// <param name="showStackTrace">获取堆栈信息</param>
  
/// <param name="Prefix"></param>
  
/// <returns></returns>
  
public static string GetMessageEF(this Exception ex, bool showStackTrace = false, string Prefix = "")
  {
    StringBuilder sb
= new StringBuilder();
    
    sb.AppendLine(Prefix +
"【异常类型】∶" + ex.GetType().Name);
    sb.AppendLine(Prefix +
"【异常信息】:" + ex.Message);
    sb.AppendLine(Prefix +
"【异常方法】:" + ex.TargetSite);
    
    
if (showStackTrace)
    sb.AppendLine(Prefix +
"【堆栈调用】:" + ex.StackTrace);
    
    
//EF框架校验实体异常
    
if (ex is DbEntityValidationException efex)
    {
      
if (efex.EntityValidationErrors.Count() > 0)
      {
        
var sb1 = new StringBuilder();
        
foreach (var v in efex.EntityValidationErrors)
        {
          sb1.AppendLine(String.Join(
"\r\n", v.ValidationErrors.Select(s => s.ErrorMessage).ToList()));
          };
          
if (sb1.Length > 0)
          sb.AppendLine(Prefix +
"【EF内部异常】:" + sb1.ToString());
        }
      }
      
      
//Exception内部异常
      
if (ex.InnerException != null)
      {
        sb.AppendLine(Prefix +
"【InnerException】:" + ex.InnerException.Message);
        
        
if (ex.InnerException.InnerException != null)
        sb.AppendLine(ex.InnerException.InnerException.Message);
        
      }
      
return sb.ToString();
    }
  }
  
  
//来源:C/S框架网 | www.csframework.com | QQ:23404761




使用方法


C# Code:

catch (Exception ex)
{
  db.RollbackTransaction();
  
throw new BizException(ex.GetMessageEF());
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761



BizException


C# Code:

public class BizException : Exception
{
  
public BizException();
  
public BizException(string message);
  
public BizException(int errorCode, string message);
  
  
public int ErrorCode { get; set; }
}

//来源:C/S框架网 | www.csframework.com | QQ:23404761





C/S框架网|原创精神.创造价值.打造精品


扫一扫加作者微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务
上一篇 下一篇