我剛剛Try catch在我的代碼中實作了一個,錯誤是因為我必須在 中回傳一些東西catch,我無法理解是“我應該回傳什么?”
'CompanyController.Create(DtoCompany)':并非所有代碼路徑都回傳值 [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);
}
無法將型別“void”隱式轉換為“Microsoft.AspNetCore.Mvc.ActionResult”[API]
uj5u.com熱心網友回復:
您應該回傳一個錯誤,告訴您的客戶出了什么問題。一個好的方法是回傳Problem()。
https://docs.microsoft.com/en-us/aspnet/core/web-api/handle-errors?view=aspnetcore-6.0
uj5u.com熱心網友回復:
'CompanyController.Create(DtoCompany)':并非所有代碼路徑都回傳值 [API]
我無法理解的是“我應該回傳什么?”
如果在 try 塊中已經有一個 return 陳述句,您可以將另一個 return 放在函式的末尾,這是為了避免在需要處理多個例外時多次回傳:
try
{
//somecode
return Ok();
}
catch(Exception ex)
{
Console.WriteLine("Error From Company-Create:", ex.Message);
}
return BadRequest();// add this code
uj5u.com熱心網友回復:
你不應該從你在第一個塊中實作的catch部分中回傳任何東西......簡單的陳述句是要求編譯器做一些事情,如果代碼中發生任何錯誤,只需抓住它并使用 a or MessageBox顯示給我 Console.WriteLinetry catchMessageBox 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");
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475672.html
標籤:C# asp.net 核心 asp.net-web-api
上一篇:在提交表單之前詢問用戶
