我有以下方法,Resharper 告诉我这if(drivers != null)
将永远是真的,但我不知道为什么,它告诉我该catch
块是多余的,但有人可以解释为什么吗?这是代码:
public List<Driver> GetDrivers(int id)
{
if (_context != null)
{
try
{
var drivers = _context.Drivers.Where(x=> x.id == id).ToList();
//Always true
if (drivers != null)
{
//code
}
else
{
//Heuristically unreachable
throw new Exception("No Driver");
}
}
catch (Exception ex)
{
throw;
}
}
return drivers;
}
- 为什么
if(drivers != null)
总是正确的?驱动程序不能为空吗?如果它是正确的,我假设驱动程序的默认值不为空。 - 我假设它告诉 else 语句是不可访问的,因为它认为驱动程序永远不能为空,但情况是这样吗?
- 它告诉我这
catch
是多余的,但除了是 null 之外,resharper 说它不能,是否还有另一个可以引发的异常会导致catch
执行?