InvalidOperationException игнорируется в блоке try / catch - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть следующая кодировка

  try
            {
                var foundCanProperty = properties
                    .First(x => x.Name == "Can" + method.Name);

                var foundOnExecuteMethod = methods
                    .First(x => x.Name == "On" + method.Name);

                var command = new Command(this, foundOnExecuteMethod, foundCanProperty);
                TrySetCommand(foundControl as Control, command);

            }
            catch (InvalidOperationException ex)
            {
                throw new FatalException("Please check if you have provided all 'On' and 'Can' methods/properties for the view" + View.GetType().FullName, ex);
            }

Я ожидал, что если method.First () (во втором выражении var) выдает исключение InvalidOperationException, я смогу его перехватить.Но, похоже, это не так (блок catch игнорируется, и приложение завершается с повышенным исключением).Если я выбрасываю себе исключение того же типа в блоке try, он ловится.Использует ли Linq многопоточность, чтобы исключение создавалось в другом потоке?Возможно, я делаю и здесь глупую ошибку и просто не вижу ее: (.

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Исключительная ситуация InvalidOperationException возникает, когда исходная последовательность пуста. ссылка на http://msdn.microsoft.com/en-us/library/bb291976.aspx

проверьте, чтобы "свойства" или "методы" не были пустыми.

Из интереса, почему вы не используете FirstOrDefault?

0 голосов
/ 06 декабря 2011

Я знаю, что это не ответ, а некоторые дополнительные шаги для отладки, но это что-то меняет, если вместо этого вы пытаетесь поймать общий тип «Исключение» вместо IOE? Это может помочь изолировать, действительно ли метод выбрасывает IOE или если его сбой генерирует IOE где-то еще в стеке. Также - при условии, что этот метод отсутствует в main () - есть ли способ обернуть вызов к нему в try / catch, а затем проверить поведение в этой точке в потоке вызовов?

Также извиняюсь, что я очень мало знаю о среде разработки SilverLight, так что, надеюсь, предложения не за горами.

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