这段代码可以拉出到一个单独的方法中吗?
Can this code be pulled out into a separate method?
下面显示的整个 try-catch 块 可以拉出到一个方法中吗?
我的老板让我做,但我觉得我错过了什么,因为我认为它不能被拉出来(没有太多的复杂性,因为里面有 return Ok(response);
行) .我不想在不确定的情况下拒绝他
[Authorize]
[HttpPost("endpoint123")]
public async Task<ActionResult> Endpoint123(Data data)
{
ResponseObject response = new ResponseObject
{
Success = false,
ErrorMessage = "",
UserAdded = false
};
try
{
var e = await Request111(data); // this can throw exception
if (e.result != -1)
{
var success = await Request222(data); // this can throw exception
if (!success)
{
response.ErrorMessage += "errorMessage123";
// _loggingService is a global variable
_loggingService.Log(LogLevel.Error, Priority.High, "Error happened");
return Ok(response); // <-- Notice this returns ok response
}
}
response.Success = true;
}
catch (Exception ex)
{
response.ErrorMessage += ex.Message;
_loggingService.Log(LogLevel.Error, Priority.High, "Error happened");
response.Success = false;
}
response.UserAdded = true;
return Ok(response);
}
可以吗?
当然。
[Authorize]
[HttpPost("endpoint123")]
public async Task<ActionResult> Endpoint123(Data data)
{
var response = await Logic(data);
return Ok(response);
}
Logic() 的实现并不过分困难。
在真实的 API 中,我不确定将每个结果 return 设为 200 OK 是否有意义,但该选择已经做出。
请注意,要提取它,Logic() 方法总是 returns a Task<ResponseObject>
.
此外,如果您只想退出 try,只需 return 方法中的 ResponseObject 然后在调用站点用 Ok() 将其包装起来就很容易。
下面显示的整个 try-catch 块 可以拉出到一个方法中吗?
我的老板让我做,但我觉得我错过了什么,因为我认为它不能被拉出来(没有太多的复杂性,因为里面有 return Ok(response);
行) .我不想在不确定的情况下拒绝他
[Authorize]
[HttpPost("endpoint123")]
public async Task<ActionResult> Endpoint123(Data data)
{
ResponseObject response = new ResponseObject
{
Success = false,
ErrorMessage = "",
UserAdded = false
};
try
{
var e = await Request111(data); // this can throw exception
if (e.result != -1)
{
var success = await Request222(data); // this can throw exception
if (!success)
{
response.ErrorMessage += "errorMessage123";
// _loggingService is a global variable
_loggingService.Log(LogLevel.Error, Priority.High, "Error happened");
return Ok(response); // <-- Notice this returns ok response
}
}
response.Success = true;
}
catch (Exception ex)
{
response.ErrorMessage += ex.Message;
_loggingService.Log(LogLevel.Error, Priority.High, "Error happened");
response.Success = false;
}
response.UserAdded = true;
return Ok(response);
}
可以吗? 当然。
[Authorize]
[HttpPost("endpoint123")]
public async Task<ActionResult> Endpoint123(Data data)
{
var response = await Logic(data);
return Ok(response);
}
Logic() 的实现并不过分困难。
在真实的 API 中,我不确定将每个结果 return 设为 200 OK 是否有意义,但该选择已经做出。
请注意,要提取它,Logic() 方法总是 returns a Task<ResponseObject>
.
此外,如果您只想退出 try,只需 return 方法中的 ResponseObject 然后在调用站点用 Ok() 将其包装起来就很容易。