减少异常日志
约 250 字小于 1 分钟
2025-02-12
我们编写 Controller 方法时,通常会以抛出异常的形式来阻止用户的请求。例如,在以下实现登录的代码中,当用户名密码不正确时,我们可以抛出异常以提示登录失败的原因。
public string Login(string name,string password)
{
if (name != "jack" || password != "123")
throw new Exception("用户名密码错误");
....
}
然而,Controller 抛出异常后,Mirage 底层框架会产生一条日志。如果您希望某些异常不必产生日志,则需要在 BaseController 中进行处理。
首先,我们可以自定义一个异常类
internal class ServiceException : Exception
{
public ServiceException(string message) : base(message)
{
}
}
然后在 BaseController.OnInvokeError 中判断一下,如果是 ServiceException 则不产生日志
因此,对于业务代码故意抛出的异常,我们建议统一使用 ServiceException,以避免生成无用的日志。
public string Login(string name,string password)
{
if (name != "jack" || password != "123")
throw new ServiceException("用户名密码错误");
....
}