Как вернуться из метода, где обнаружена ошибка, но ожидается тип - PullRequest
0 голосов
/ 10 мая 2018

Предположим, у меня есть метод, который возвращает List<int> и что в процессе получения этого List<int> возникает ошибка, так что данные не могут быть собраны.Каков наилучший способ обработки этого исключения в методе?Программа ожидает, что метод вернет List, но, по какой-то причине произошла ошибка, она больше не может этого делать.Что я должен вернуть из метода?Это пользовательское исключение, которое перехватывается вызывающим кодом?

private List<int> GetData()
{
  List<in> theData = new List<int>();
  theData = ProcessThatGetsData(); //Error occurs in here
  return theData;  //What should be returned here?
}

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Это пользовательское исключение, которое перехватывается вызывающим кодом

Да, просто разрешить возникновение исключений, вызывающие методы отвечают за обработку исключений (с помощью блоков try-catch).

0 голосов
/ 10 мая 2018

Если вы хотите перехватить исключительную ситуацию и обработать ее, один из способов сделать это - использовать возвращаемый объект, подобный этому:

        private OperationResult GetData()
        {
            List<int> theData = new List<int>();
            try
            {
                theData = ProcessThatGetsData(); //Error occurs in here
                return new OperationResult { Success = true, Data = theData };
            }
            catch (Exception exc)
            {
                return new OperationResult { Success = false };
            }
            return theData;  //What should be returned here?
        }

        public class OperationResult
        {
            public bool Success { get; set; }
            public IList<int> Data { get; set; }
        }

Это вариант, однако я бы предпочел , а не , чтобы поместить здесь оператор try catch, только на уровне, который вам действительно нужен ... в этом случае ваш код не нуждается в изменить или беспокоиться о типе возврата.

Везде, где вы вызываете метод GetData, поместите вызов в оператор try / catch, и все будет в порядке.

Помните, всегда обрабатывайте исключения на том уровне, на котором они должны обрабатываться, не переусердствуйте.

Надеюсь, это поможет

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