C# 尝试在MVC3中不工作的Catch
MVC3-在发布模式下,这仍然会在第一行var ordreedListOfRfidTags上失败 我想知道为什么try-catch不是一次又一次的尝试? 然后按F10键,它会转到这里。。这是我的ORM包装的一部分。。。嗯,我想知道这是否是问题所在C# 尝试在MVC3中不工作的Catch,c#,asp.net-mvc-3,C#,Asp.net Mvc 3,MVC3-在发布模式下,这仍然会在第一行var ordreedListOfRfidTags上失败 我想知道为什么try-catch不是一次又一次的尝试? 然后按F10键,它会转到这里。。这是我的ORM包装的一部分。。。嗯,我想知道这是否是问题所在 try { var orderedListOfRfidTags = uow.RfidTags.ToList().OrderBy(t => int.Parse(t.Number)); return View(orderedList
try
{
var orderedListOfRfidTags = uow.RfidTags.ToList().OrderBy(t => int.Parse(t.Number));
return View(orderedListOfRfidTags);
}
catch
{
var orderedListOfRfidTags = uow.RfidTags.OrderBy(t => t.Number).ToList();
return View(orderedListOfRfidTags);
}
在尝试访问列表中的元素之前,不会调用传递给OrderBy的委托
因此,我认为没有捕捉到错误,因为在操作方法返回之后,在呈现视图之前,不会枚举集合。这是一个糟糕的设计;捕获中不应该有任何可能引发另一个异常的代码 如果我理解您的代码,您希望尝试将RFID解析为
int
,但如果失败,请使用字符串作为排序依据
如果你不能预见到RfidTag
s的Numbers
不会是一个数字(这似乎是一个愚蠢的命名结构),那么我会把它作为字符串排序,放弃int解析答案是LightSpeed失败了。一旦添加了支持(非常快-非常棒的产品!),一切都很好:
protected override void OnResultExecuted(ResultExecutedContext filterContext)
{
if (_unitOfWorkScope != null)
{
_unitOfWorkScope.Dispose();
}
base.OnResultExecuted(filterContext);
}
你确定它在第一条线上失败了,而不是在第二条线上失败了吗?(例如,uow.RfidTags为空)您能解释一下您的代码吗?什么正在尝试,什么正在捕获?预期结果?实际效果如何?什么失败?如果第一行失败,会发生什么?也很容易忘记,这不会捕获渲染视图时抛出的任何异常。
// trying to convert to an int.. if fail, use string
// need up to date nightly build of LS3.1 for this to work
// otherwise trycatch will fail due to LS crashing out.
try
{
var orderedListOfRfidTags = uow.RfidTags
.OrderBy(t => Convert.ToInt32(t.Number))
.ToList();
return View(orderedListOfRfidTags);
}
catch
{
var orderedListOfRfidTags = uow.RfidTags
.OrderBy(t => t.Number)
.ToList();
return View(orderedListOfRfidTags);
}