ServiceException.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /*
  2. * Copyright (C) Alibaba Cloud Computing
  3. * All rights reserved.
  4. *
  5. * 版权所有 (C)阿里云计算有限公司
  6. */
  7. using System;
  8. using System.Runtime.Serialization;
  9. using System.Security.Permissions;
  10. namespace Aliyun.OSS.Common
  11. {
  12. /// <summary>
  13. /// <para>
  14. /// 表示阿里云服务返回的错误消息。
  15. /// </para>
  16. /// <para>
  17. /// <see cref="ServiceException" />用于处理阿里云服务返回的错误消息。
  18. /// 比如,用于身份验证的AccessKeyID不存在,则会抛出<see cref="ServiceException" />。
  19. /// 异常中包含了错误代码,用于让调用者进行特定的处理。
  20. /// </para>
  21. /// <para>
  22. /// <see cref="System.Net.WebException" />表示的则是在向阿里云服务发送请求时出现的错误。
  23. /// 例如,在发送请求时网络连接不可用,则会抛出<see cref="System.Net.WebException" />的异常。
  24. /// </para>
  25. /// <para>
  26. /// <see cref="InvalidOperationException" />表示客户端代码无法处理或解析返回结果。这种情况
  27. /// 有可能是服务器返回的结果不完整,或不再符合SDK设计时的规范。如果持续遇到该错误,请考虑升级
  28. /// SDK版本,或联系我们。
  29. /// </para>
  30. /// 通常来讲,调用者只需要处理<see cref="ServiceException" />。因为该异常表明请求被服务处理,
  31. /// 但处理的结果表明存在错误。异常中包含了细节的信息,特别是错误代码,可以帮助调用者进行处理。
  32. /// <para>
  33. ///
  34. /// </para>
  35. /// </summary>
  36. [Serializable]
  37. public class ServiceException : Exception
  38. {
  39. /// <summary>
  40. /// 获取错误代码。
  41. /// </summary>
  42. public virtual string ErrorCode { get; internal set; }
  43. /// <summary>
  44. /// 获取Request ID。
  45. /// </summary>
  46. public virtual string RequestId { get; internal set; }
  47. /// <summary>
  48. /// 获取Host ID。
  49. /// </summary>
  50. public virtual string HostId { get; internal set; }
  51. /// <summary>
  52. /// 初始化新的<see cref="ServiceException"/>实例。
  53. /// </summary>
  54. public ServiceException()
  55. { }
  56. /// <summary>
  57. /// 初始化新的<see cref="ServiceException"/>实例。
  58. /// </summary>
  59. /// <param name="message">解释异常原因的错误信息。</param>
  60. public ServiceException(string message)
  61. : base(message)
  62. { }
  63. /// <summary>
  64. /// 初始化新的<see cref="ServiceException"/>实例。
  65. /// </summary>
  66. /// <param name="message">解释异常原因的错误信息。</param>
  67. /// <param name="innerException">导致当前异常的异常。</param>
  68. public ServiceException(string message, Exception innerException)
  69. : base(message, innerException)
  70. { }
  71. /// <summary>
  72. /// 初始化新的<see cref="ServiceException"/>实例。
  73. /// </summary>
  74. /// <param name="info">保存序列化对象数据的对象。</param>
  75. /// <param name="context">有关源或目标的上下文信息。</param>
  76. protected ServiceException(SerializationInfo info, StreamingContext context)
  77. : base(info, context)
  78. { }
  79. /// <summary>
  80. /// 重载<see cref="ISerializable.GetObjectData"/>方法。
  81. /// </summary>
  82. /// <param name="info"><see cref="SerializationInfo"/>,它存有有关所引发异常的序列化的对象数据。</param>
  83. /// <param name="context"><see cref="StreamingContext"/>,它包含有关源或目标的上下文信息。</param>
  84. [SecurityPermission(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
  85. public override void GetObjectData(SerializationInfo info, StreamingContext context)
  86. {
  87. base.GetObjectData(info, context);
  88. }
  89. }
  90. }