我們目前的許多控制器是這樣的:處理異常
[HttpPost]
public List<Foo> Post([FromBody]Bar model)
{
if (model == null)
{
throw new ArgumentNullException();
}
try
{
// business logic
}
catch (Exception ex)
{
// logging
}
return dto;
}
大量的代碼正在這裏雖然重複。我想要做的是實現一個基本的控制器來處理異常,所以我可以返回標準化反應與Error
像Payload
領域,Success
,等
此前.NET的核心,這是可以通過提供覆蓋OnException
但是,這似乎不適用於.net核心API控制器。當我的控制器主體發生錯誤時,如何合併此異常邏輯以返回自定義響應?
我想此,作爲起點:
[HttpPost]
public StandardFoo Post([FromBody]Bar model)
{
if (model == null)
{
throw new ArgumentNullException();
}
// business logic
return new StandardFoo(){Payload: dto};
}
凡異常,由模型驗證或business logic
冒泡一些的邏輯塊與包含異常細節的屬性返回一個新StandardFoo
拋出。
documentation:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/error-handling – Nkosi
您正在關注錯誤的方法。你應該避免使用基於控制器的異常處理方法,以及控制器中的try catch。應儘可能保持管理者的精益,並將責任合併到另一個班級中。這似乎是[XY問題](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 – Nkosi
@Nkosi你能否提供一個簡單而簡潔的例子,說明如何在拋出異常時使用上述控制器並返回自定義響應? – user666