using dy.net.model.dto;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
namespace dy.net.extension
{
public class DouyinExceptionFilter : IExceptionFilter
{
///
/// 异常拦截核心方法
///
public void OnException(ExceptionContext context)
{
// 1. 记录异常日志(区分业务异常和系统异常)
LogException(context);
// 2. 构建标准化响应结果
var response = BuildExceptionResponse(context.Exception);
// 3. 设置响应结果(终止异常传播)
context.Result = new ObjectResult(response);
context.ExceptionHandled = true;
}
///
/// 记录异常日志
///
private void LogException(ExceptionContext ex)
{
Serilog.Log.Error($"系统异常:{ex.Exception.Message},{ex.HttpContext.Request.Path}");
}
///
/// 根据异常类型构建响应结果
///
private static DouyinApiResponse