我应该 return 捕获什么值?
What value should I return in catch?
我刚刚在我的代码中实现了一个 Try
catch
,错误是因为我必须 return catch
中的一些东西,
我无法理解的是“我应该 return 做什么?”
'CompanyController.Create(DtoCompany)': not all code paths return a
value [API]
[HttpPost("create/")]
public async Task<ActionResult> Create([FromBody] DtoCompany dto_company)
{
try
{
var query = context.Companies.FirstOrDefault(x => x.rnc == dto_company.rnc);
if (query != null)
{
Company comp = mapper.Map<Company>(query);
context.Add(comp);
await context.SaveChangesAsync();
return Ok("Registro de compania exitoso");
}
else
{
return BadRequest($"Ya existe una compañia con este RNC: `{dto_company.rnc}`");
}
}
catch (Exception ex)
{
Console.WriteLine("Error From Company-Create:", ex.Message);
}
}
如果我写 return
这个,我会得到另一个错误:
catch (Exception ex)
{
return Console.WriteLine("Error From Company-Create:", ex.Message);
}
Cannot implicitly convert type 'void' to
'Microsoft.AspNetCore.Mvc.ActionResult' [API]
您应该 return 一个错误告诉您的客户出了什么问题。
一个好的方法是 return Problem()
.
https://docs.microsoft.com/en-us/aspnet/core/web-api/handle-errors?view=aspnetcore-6.0
你不应该 return 来自 catch
部分的任何东西只是你在第一个块上实现的 MessageBox
或 Console.WriteLine
...
简单的 try catch
语句是要求编译器做某事,如果代码中发生任何错误,只需捕获它并使用 MessageBox
或 Console.WriteLine
显示给我
示例:
try
{
sqlConnection conn = new sqlConnection(connection_string);
conn.Open();
}
catch (Exception ex)
{
if (ex.Message == "Certain specific error")
MessageBox.Show("Do not do it");
else
MessageBox.Show("Please do not do it");
'CompanyController.Create(DtoCompany)': not all code paths return a
value [API]
I can't understand is "what should I return?"
如果在 try 块中已经有一个 return 语句,您可以将另一个 return 放在函数的末尾,这是为了避免多个 returns如果需要处理多个异常:
try
{
//somecode
return Ok();
}
catch(Exception ex)
{
Console.WriteLine("Error From Company-Create:", ex.Message);
}
return BadRequest();// add this code
我刚刚在我的代码中实现了一个 Try
catch
,错误是因为我必须 return catch
中的一些东西,
我无法理解的是“我应该 return 做什么?”
'CompanyController.Create(DtoCompany)': not all code paths return a value [API]
[HttpPost("create/")]
public async Task<ActionResult> Create([FromBody] DtoCompany dto_company)
{
try
{
var query = context.Companies.FirstOrDefault(x => x.rnc == dto_company.rnc);
if (query != null)
{
Company comp = mapper.Map<Company>(query);
context.Add(comp);
await context.SaveChangesAsync();
return Ok("Registro de compania exitoso");
}
else
{
return BadRequest($"Ya existe una compañia con este RNC: `{dto_company.rnc}`");
}
}
catch (Exception ex)
{
Console.WriteLine("Error From Company-Create:", ex.Message);
}
}
如果我写 return
这个,我会得到另一个错误:
catch (Exception ex)
{
return Console.WriteLine("Error From Company-Create:", ex.Message);
}
Cannot implicitly convert type 'void' to 'Microsoft.AspNetCore.Mvc.ActionResult' [API]
您应该 return 一个错误告诉您的客户出了什么问题。
一个好的方法是 return Problem()
.
https://docs.microsoft.com/en-us/aspnet/core/web-api/handle-errors?view=aspnetcore-6.0
你不应该 return 来自 catch
部分的任何东西只是你在第一个块上实现的 MessageBox
或 Console.WriteLine
...
简单的 try catch
语句是要求编译器做某事,如果代码中发生任何错误,只需捕获它并使用 MessageBox
或 Console.WriteLine
示例:
try
{
sqlConnection conn = new sqlConnection(connection_string);
conn.Open();
}
catch (Exception ex)
{
if (ex.Message == "Certain specific error")
MessageBox.Show("Do not do it");
else
MessageBox.Show("Please do not do it");
'CompanyController.Create(DtoCompany)': not all code paths return a value [API]
I can't understand is "what should I return?"
如果在 try 块中已经有一个 return 语句,您可以将另一个 return 放在函数的末尾,这是为了避免多个 returns如果需要处理多个异常:
try
{
//somecode
return Ok();
}
catch(Exception ex)
{
Console.WriteLine("Error From Company-Create:", ex.Message);
}
return BadRequest();// add this code