马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

C# 自定义异常

[复制链接]
查看2185 | 回复0 | 2019-9-17 11:16:32 | 显示全部楼层 |阅读模式

自定义非常

C#中提供了丰富的非常类,但是为了满意一些其他方面需求,只有自定义一个非常类。而本日我们定义的这个非常类添加的功能也简单,就是进非常信息打印到日志中即可。

以是代码如下:

  1. [Serializable]
  2. public class PFTException : Exception
  3. {
  4. public PFTException()
  5. {
  6. }
  7. public PFTException(string message)
  8. : base(message)
  9. {
  10. PFTLog.Error(message, () => { });
  11. }
  12. public PFTException(string messageFormat, params object[] args)
  13. : base(string.Format(messageFormat, args))
  14. {
  15. PFTLog.Error(string.Format(messageFormat, args), () => { });
  16. }
  17. public PFTException(string message, Exception innerException)
  18. : base(message, innerException)
  19. {
  20. //只记录最原始的Exception信息
  21. if (!(innerException is PFTException))
  22. {
  23. PFTLog.Error(message, innerException, () => { });
  24. }
  25. }
  26. /// <summary>
  27. /// 实现ISerialization接口所需要的反序列化构造函数。
  28. /// </summary>
  29. /// <param name="info"></param>
  30. /// <param name="context"></param>
  31. private PFTException(SerializationInfo info, StreamingContext context) : base(info, context)
  32. {
  33. // stringInfo = info.GetString("StringInfo");
  34. }
  35. /// <summary>
  36. /// 重写GetObjectData方法。如果添加了自定义字段,肯定要重写基类GetObjectData方法的实现
  37. /// </summary>
  38. /// <param name="info"></param>
  39. /// <param name="context"></param>
  40. public override void GetObjectData(SerializationInfo info, StreamingContext context)
  41. {
  42. // 序列化自定义数据成员
  43. //info.AddValue("StringInfo", stringInfo);
  44. // 调用基类方法,序列化它的成员
  45. base.GetObjectData(info, context);
  46. }
  47. }
复制代码

里面的日志方法可以看到我之前的【Log4Net 日志记录的实现】,当我们直接抛PFTException信息时,我们就将message信息保存到日志里面,如果是带有Exception,就判定Exception是否是PFTException本身,如果不是就分析是系统的非常类,也需要记录里面的信息到日志。







来源:https://www.cnblogs.com/snailblog/archive/2019/09/16/11530629.html
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则