我开发了用于CRUD操作的API。
它是.NET Core,我有一个全局异常处理程序,可以捕获所有异常,但我不在代码中处理。
记录具有堆栈跟踪的异常,并且API返回状态为500的常规错误消息。
现在可以说有人要向数据库中添加新产品。为此,我的API被称为。
现在,该产品(由于某种原因)没有有效的名称。我的业务逻辑检查产品的名称,并引发“ NameNotValid”异常和消息:“您尝试插入的产品没有有效名称。”
现在我可以做两件事:
在我的控制器中捕获NameNotValid异常,然后将e.message返回给用户并进行日志记录。
什么也不做,让我的全局异常处理程序捕获异常
第一种方法是更多的工作,而我看到的唯一好处是,用户将收到一条消息,说明他的请求出了什么问题。
如果我根本没有捕获到异常,则全局处理程序将写入日志,并且用户将仅获得“发生了错误”。
是否有最佳实践来处理这种情况?
我的一般问题是:
”如果我抛出异常,但无法很好地“处理”它,并将操作保存到其中之一 上层,我应该抓住吗?还是我应该一直使用 全局异常处理程序?”