我正在API应用程序中编写请求处理程序。该应用程序通过HTTP与许多(微)服务进行通信。因此,我为每个服务(示例代码中的AuthService,LogService,DatabaseService)编写了一个类,该类带有方法(示例代码中的Login,TryLog,GetPets),当通信失败时会抛出ServiceException。
在我的请求处理程序方法中,我调用这些方法并在引发异常时捕获这些异常。
示例代码:
public override async Task HandleRequest()
{
try
{
AuthService.Login(this._Token);
}
catch (ServiceException se)
{
// specific code
LogService.TryLog("Signing in failed");
// shared code
LogService.TryLog("Handling request failed.");
this.Respond(HttpStatusCode.InternalServerError);
return;
}
try
{
this._Pets = DatabaseService.GetPets(kind: "dog");
}
catch (ServiceException se)
{
// specific code
LogService.TryLog("Getting pets failed");
// shared code
LogService.TryLog("Handling request failed");
this.Respond(HttpStatusCode.InternalServerError);
return;
}
this.Respond(HtppStatusCode.OK, this._Pets);
}
如您所见,在每个catch块中,我需要执行该catch块特有的一些代码,以及对所有catch块完全相同的代码。
重用此类代码的最佳/推荐方式是什么?
我想到的选项: