Попробуйте Catch не работает в MVC3 - PullRequest
0 голосов
/ 13 мая 2011
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);
}

MVC3 - в режиме Release это по-прежнему завершится ошибкой в ​​первой строке var ordreedListOfRfidTags ...

Интересно, почему попытка поймать не пытается, и ловить? enter image description here

затем нажимая F10, он переходит сюда ... который является частью моей оболочки ORM ... хм Интересно, в этом ли проблема.

protected override void OnResultExecuted(ResultExecutedContext filterContext)
        {
            if (_unitOfWorkScope != null)
            {
                _unitOfWorkScope.Dispose();
            }

            base.OnResultExecuted(filterContext);
        }

Ответы [ 3 ]

2 голосов
/ 13 мая 2011

Делегат, переданный в OrderBy, не вызывается, пока вы не попытаетесь получить доступ к элементам в списке.

Так что я думаю, что ошибка не перехватывается, потому что ваша коллекция не перечисляется до тех пор, пока представление не будет обработано после возврата метода действия.

0 голосов
/ 08 июня 2011

Ответ состоял в том, что LightSpeed ​​терпел неудачу.Как только поддержка была добавлена ​​(очень быстро - потрясающий продукт!), Все работало нормально:

// 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);
        }
0 голосов
/ 13 мая 2011

Это плохой дизайн; в вашем улове не должно быть кода, который потенциально может вызвать другое исключение.

Если я понимаю ваш код, вы хотите попытаться проанализировать RFID для int, но в случае сбоя использовать string в качестве своего рода?

Если вы не можете гарантировать, что Numbers из RfidTag s не будет числом (что выглядит глупой структурой именования), то я бы оставил это как строковую сортировку и отказался от разбора int

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...