| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- namespace OASystem.API.OAMethodLib.TokenHubAI.Models;
- /// <summary>
- /// TokenHub API 异常
- /// </summary>
- public class TokenHubException : Exception
- {
- /// <summary>
- /// HTTP 状态码
- /// </summary>
- public int StatusCode { get; }
- /// <summary>
- /// 错误类型
- /// </summary>
- public string? ErrorType { get; }
- /// <summary>
- /// 业务错误码
- /// </summary>
- public string? ErrorCode { get; }
- /// <summary>
- /// 错误来源
- /// </summary>
- public string? Source { get; }
- /// <summary>
- /// 请求 ID
- /// </summary>
- public string? RequestId { get; }
- /// <summary>
- /// 是否可重试
- /// </summary>
- public bool IsRetryable { get; }
- /// <summary>
- /// 原始错误对象
- /// </summary>
- public TokenHubError? ErrorDetail { get; }
- public TokenHubException(
- string message,
- int statusCode,
- TokenHubError? errorDetail = null,
- Exception? innerException = null)
- : base(message, innerException)
- {
- StatusCode = statusCode;
- ErrorDetail = errorDetail;
- if (errorDetail != null)
- {
- ErrorType = errorDetail.Type;
- ErrorCode = errorDetail.Code;
- Source = errorDetail.Source;
- RequestId = errorDetail.RequestId;
- IsRetryable = errorDetail.IsRetryable;
- }
- }
- public override string ToString()
- {
- var parts = new List<string>
- {
- $"StatusCode: {StatusCode}",
- $"Message: {Message}"
- };
- if (!string.IsNullOrEmpty(ErrorCode))
- parts.Add($"ErrorCode: {ErrorCode}");
- if (!string.IsNullOrEmpty(ErrorType))
- parts.Add($"ErrorType: {ErrorType}");
- if (!string.IsNullOrEmpty(RequestId))
- parts.Add($"RequestId: {RequestId}");
- if (IsRetryable)
- parts.Add("Retryable: Yes");
- return $"TokenHubException: {string.Join(", ", parts)}";
- }
- ///// <summary>
- ///// 转换为 JsonView
- ///// </summary>
- //public JsonView ToJsonView(this TokenHubException ex)
- //{
- // // 获取用户友好消息(使用已有的扩展方法)
- // string message = ex.GetUserFriendlyMessage();
- // // 构建附加数据
- // var data = new
- // {
- // ex.StatusCode,
- // ex.ErrorCode,
- // ex.ErrorType,
- // ex.RequestId,
- // ex.IsRetryable,
- // ex.Source
- // };
- // // 使用 JsonView.Fail 返回
- // return JsonView.Fail(message, StatusCodes.Status400BadRequest, data);
- //}
- }
|