Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 错误捕获最佳方法_C# - Fatal编程技术网

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
的情况下进行迭代,空列表始终可以提供信息