Files
Yi.Framework/Yi.Furion.Net6/Yi.Framework.Infrastructure/Exceptions/BusinessException.cs
2023-04-15 17:35:22 +08:00

49 lines
1.4 KiB
C#

using System.ComponentModel.DataAnnotations;
using System.Runtime.Serialization;
using Furion.FriendlyException;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Yi.Framework.Infrastructure.Enums;
namespace Yi.Framework.Infrastructure.Exceptions
{
public class BusinessException : AppFriendlyException,
IHasErrorCode,
IHasErrorDetails,
IHasLogLevel
{
public int Code { get; set; }
public string? Details { get; set; }
public LogLevel LogLevel { get; set; }
public BusinessException(
int code = (int)ResultCodeEnum.Denied,
string? message = null,
string? details = null,
Exception? innerException = null,
LogLevel logLevel = LogLevel.Warning)
: base(message, innerException)
{
Code = code;
Details = details;
LogLevel = logLevel;
base.ErrorCode= code;
base.StatusCode = StatusCodes.Status403Forbidden;
base.ErrorMessage = $"{message}{(details is not null? ":"+details:"")}";
base.ValidationException = true;
}
/// <summary>
/// 序列化参数的构造函数
/// </summary>
public BusinessException(SerializationInfo serializationInfo, StreamingContext context)
: base(serializationInfo, context)
{
}
}
}