使用此代码:
public String Get(int id)
{
return platypi.Find(p => p.Id == id).Name;
}
...我可以通过以下方式获取现有数据:
http://localhost:33181/api/DPlatypus/N
(其中N对应于现有ID)。但是,如果我使用不存在的值,它就会爆炸。
所以,我试过这个:
public String Get(int id)
{
if (!string.IsNullOrEmpty(platypi.Find(p => p.Id == id).Name))
{
return platypi.Find(p => p.Id == id).Name;
}
return string.Empty;
}
......但它没有任何有益效果。有没有办法安全地忽略无效请求?
答案 0 :(得分:3)
你应该比那更具防御性。首先检查null
..否则你要求它爆炸:
var entity = platypi.Find(p => p.Id == id);
return entity == null ? string.Empty : entity.Name;
您目前还在进行多次查找..您不需要(Find
检查名称..然后Find
返回名称..)。
答案 1 :(得分:3)
如果Find
方法引发异常,您可以将其包装在异常处理程序中。这将允许您“安全地”在无效输入上返回空字符串。
如果Find
返回null
,您可以执行以下操作:
public String Get(int id)
{
var item = platypi.Find(p => p.Id == id);
return item == null ? string.Empty : item.Name;
}