Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.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# 尝试在MVC3中不工作的Catch_C#_Asp.net Mvc 3 - Fatal编程技术网

C# 尝试在MVC3中不工作的Catch

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

MVC3-在发布模式下,这仍然会在第一行var ordreedListOfRfidTags上失败

我想知道为什么try-catch不是一次又一次的尝试?

然后按F10键,它会转到这里。。这是我的ORM包装的一部分。。。嗯,我想知道这是否是问题所在

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);
        }