C# 错误捕获最佳方法
嗨,我正在尝试获取所有故障单的列表,但它表明并非所有代码路径都返回一个值。有人知道我做错了什么吗谢谢C# 错误捕获最佳方法,c#,C#,嗨,我正在尝试获取所有故障单的列表,但它表明并非所有代码路径都返回一个值。有人知道我做错了什么吗谢谢 public List<TroubleTicket> GetAllTroubleTickets() { try { List<TroubleTicket> tickets = new List<TroubleTicket>(); var q = _supportDeskEntities.TroubleTic
public List<TroubleTicket> GetAllTroubleTickets()
{
try
{
List<TroubleTicket> tickets = new List<TroubleTicket>();
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
}
}
public List GetAllTroubleTickets()
{
尝试
{
列表票证=新列表();
var q=_supportDeskEntities.TroubleTickets.ToList();
返回q;
}
捕获(例外情况除外)
{
}
}
您需要从catch语句返回一个值(或在其中引发另一个异常)。否则,函数将返回null
您可以尝试以下方法:
public List<TroubleTicket> GetAllTroubleTickets()
{
try
{
List<TroubleTicket> tickets = new List<TroubleTicket>();
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
return new List<TroubleTicket>(); // This is just in case you want to ignore any exceptions
}
}
您需要从catch语句返回一个值(或在其中引发另一个异常)。否则,函数将返回
null
您可以尝试以下方法:
public List<TroubleTicket> GetAllTroubleTickets()
{
try
{
List<TroubleTicket> tickets = new List<TroubleTicket>();
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
return new List<TroubleTicket>(); // This is just in case you want to ignore any exceptions
}
}
如果捕捉到异常,则函数不返回任何值。因此,改变这一点:
catch (Exception ex)
{
}
为此:
catch (Exception ex)
{
return null;
}
或者,如果希望在捕获异常时返回空列表,则可以执行以下操作:
catch (Exception ex)
{
return new List<TroubleTicket>(0);
}
如果捕捉到异常,则函数不返回任何值。因此,改变这一点:
catch (Exception ex)
{
}
为此:
catch (Exception ex)
{
return null;
}
或者,如果希望在捕获异常时返回空列表,则可以执行以下操作:
catch (Exception ex)
{
return new List<TroubleTicket>(0);
}
只有在没有引发异常时才返回值。必须从
catch
块内部返回,或从try/catch结构外部返回
因此,您可以在两个不同的位置返回:
public List<TroubleTicket> GetAllTroubleTickets()
{
try
{
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
// You can also return "new List<TroubleTicket>()" if null is an unacceptable return value
return null;
}
}
public List GetAllTroubleTickets()
{
尝试
{
var q=_supportDeskEntities.TroubleTickets.ToList();
返回q;
}
捕获(例外情况除外)
{
//如果null是不可接受的返回值,则还可以返回“new List()”
返回null;
}
}
或者保留一个返回值变量,并将其设置在两个不同的位置,然后将其返回到一个位置:
public List<TroubleTicket> GetAllTroubleTickets()
{
List<TroubleTicket> tickets;
try
{
tickets = _supportDeskEntities.TroubleTickets.ToList();
}
catch (Exception ex)
{
// You can also use "new List<TroubleTicket>()" if null is an unacceptable return value
tickets = null;
}
return tickets;
}
public List GetAllTroubleTickets()
{
售票单;
尝试
{
tickets=_supportDeskEntities.TroubleTickets.ToList();
}
捕获(例外情况除外)
{
//如果null是不可接受的返回值,则也可以使用“new List()”
票证=空;
}
回程票;
}
只有在没有引发异常时才返回值。必须从catch
块内部返回,或从try/catch结构外部返回
因此,您可以在两个不同的位置返回:
public List<TroubleTicket> GetAllTroubleTickets()
{
try
{
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
// You can also return "new List<TroubleTicket>()" if null is an unacceptable return value
return null;
}
}
public List GetAllTroubleTickets()
{
尝试
{
var q=_supportDeskEntities.TroubleTickets.ToList();
返回q;
}
捕获(例外情况除外)
{
//如果null是不可接受的返回值,则还可以返回“new List()”
返回null;
}
}
或者保留一个返回值变量,并将其设置在两个不同的位置,然后将其返回到一个位置:
public List<TroubleTicket> GetAllTroubleTickets()
{
List<TroubleTicket> tickets;
try
{
tickets = _supportDeskEntities.TroubleTickets.ToList();
}
catch (Exception ex)
{
// You can also use "new List<TroubleTicket>()" if null is an unacceptable return value
tickets = null;
}
return tickets;
}
public List GetAllTroubleTickets()
{
售票单;
尝试
{
tickets=_supportDeskEntities.TroubleTickets.ToList();
}
捕获(例外情况除外)
{
//如果null是不可接受的返回值,则也可以使用“new List()”
票证=空;
}
回程票;
}
如果发生异常,则不会返回任何内容,也不会将列表分配给列表票证,而是分配给另一个变量。你可以做:
public List<TroubleTicket> GetAllTroubleTickets()
{
List<TroubleTicket> tickets = null;
bool gotTickets = true;
try{
tickets = _supportDeskEntities.TroubleTickets.ToList();
}
catch (SpecificException ex){
gotTickets = false;
}
catch (Exception ex){ // catches all other "unexpected" exceptions
// log and/or...
throw;
}
return gotTickets ? tickets : null;
}
public List GetAllTroubleTickets()
{
列表票证=空;
bool-gotTickets=true;
试一试{
tickets=_supportDeskEntities.TroubleTickets.ToList();
}
捕获(特殊异常){
gotTickets=false;
}
catch(Exception ex){//捕获所有其他“意外”异常
//日志和/或。。。
投掷;
}
退票?退票:空;
}
但您不应该捕获所有类型的异常,而应该只捕获您期望的特定类型。您还应该记录所有其他类型的异常。如果发生异常,您不会返回任何内容,也不会将列表分配给列表票证,而是分配给不同的变量。你可以做:
public List<TroubleTicket> GetAllTroubleTickets()
{
List<TroubleTicket> tickets = null;
bool gotTickets = true;
try{
tickets = _supportDeskEntities.TroubleTickets.ToList();
}
catch (SpecificException ex){
gotTickets = false;
}
catch (Exception ex){ // catches all other "unexpected" exceptions
// log and/or...
throw;
}
return gotTickets ? tickets : null;
}
public List GetAllTroubleTickets()
{
列表票证=空;
bool-gotTickets=true;
试一试{
tickets=_supportDeskEntities.TroubleTickets.ToList();
}
捕获(特殊异常){
gotTickets=false;
}
catch(Exception ex){//捕获所有其他“意外”异常
//日志和/或。。。
投掷;
}
退票?退票:空;
}
但您不应该捕获所有类型的异常,而应该只捕获您期望的特定类型。您还应该记录所有其他类型的异常。您的catch块没有返回任何内容
public List<TroubleTicket> GetAllTroubleTickets()
{
List<TroubleTicket> tickets =null;
try
{
tickets = new List<TroubleTicket>();
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
//Log or handle your error
}
return tickets;
}
public List GetAllTroubleTickets()
{
列表票证=空;
尝试
{
票证=新列表();
var q=_supportDeskEntities.TroubleTickets.ToList();
返回q;
}
捕获(例外情况除外)
{
//记录或处理您的错误
}
回程票;
}
您的catch块没有返回任何内容
public List<TroubleTicket> GetAllTroubleTickets()
{
List<TroubleTicket> tickets =null;
try
{
tickets = new List<TroubleTicket>();
var q = _supportDeskEntities.TroubleTickets.ToList();
return q;
}
catch (Exception ex)
{
//Log or handle your error
}
return tickets;
}
public List GetAllTroubleTickets()
{
列表票证=空;
尝试
{
票证=新列表();
var q=_supportDeskEntities.TroubleTickets.ToList();
返回q;
}
捕获(例外情况除外)
{
//记录或处理您的错误
}
回程票;
}
处理实体框架时,Null真的是最好的做法吗???@Sheldon:取决于调用它的函数的期望值。我已经更新了答案。您可以返回一个空列表,如上图所示。在处理实体框架时,最好的做法是什么???@Sheldon:取决于您对调用它的函数的期望。我已经更新了答案。您可以像上面那样返回一个空列表。异常提供了有关软件状态的有用信息。我不会忽视他们。但是,当您必须返回类似的内容时,我建议使用空列表:它可以在不必使用null
的情况下进行迭代,空列表始终可以提供信息