Перехват RuntimeBinderException в динамических вызовах foreach - PullRequest
0 голосов
/ 10 октября 2018

У меня есть некоторый код, читающий JSON в динамический объект, например:

dynamic listOfThings = JsonConvert.DeserializeObject(listOfThingsJson);

, и я перебираю их так:

foreach(dynamic thing in listOfThings) {
    string propertyOne = thing.PropertyOne;
    string propertyTwo = thing.PropertyTwo;
    doWork(propertyOne, propertyTwo);
}

Как я могу: ловить, если я сталкиваюсь с RuntimeBinderException либо в самом операторе foreach, либо в любом из операторов доступа к свойству, но просто игнорирую выполнение для этой одной итерации и продолжаю цикл?

Что-то вроде:

foreach(dynamic thing in listOfThings) { \\if a RuntimeBinderException is thrown on this line
    string propertyOne = thing.PropertyOne \\or on this line
    string propertyTwo = thing.PropertyTwo \\or on this line, catch the exception
    doWork(propertyOne, propertyTwo)      \\and move to the next iteration

1 Ответ

0 голосов
/ 10 октября 2018

Не уверен, почему вы не можете использовать блок try .. catch, например

foreach(dynamic thing in listOfThings) {
try {
    string propertyOne = thing.PropertyOne;
    string propertyTwo = thing.PropertyTwo;
    doWork(propertyOne, propertyTwo);
}
catch(RuntimeBinderException ex)
{
  //log the exception
  continue;
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...