//
using MoYu.DependencyInjection;
using MoYu.FriendlyException;
using Microsoft.Extensions.Logging;
namespace SafeCampus.Web.Core;
///
/// 全局异常处理提供器
///
public class LogExceptionHandler : IGlobalExceptionHandler, ISingleton
{
private readonly ILogger _logger;
public LogExceptionHandler(ILogger logger)
{
_logger = logger;
}
public async Task OnExceptionAsync(ExceptionContext context)
{
var exception = context.Exception;//获取异常
//如果异常类型不是友好异常
if (exception.GetType() != typeof(AppFriendlyException))
{
_logger.LogError(exception, exception.Message);
//重新定义异常
context.Exception = new AppFriendlyException("系统异常,请联系管理员", ErrorCodeEnum.A0000);
}
await Task.CompletedTask;
}
}