Member 13302374 Ответов: 1

C# - исключения - есть два возможных исключения, зависящих от условия


Привет,

Я отвечаю на этот вопрос там, где есть два возможных исключения, в зависимости от условия. Вопрос в том:

Система сгенерировала набор из 5 имен сотрудников, но в них могут быть ошибки. Верните 4-е имя из массива, но будьте осторожны, есть две возможные проблемы
если
массив не содержит достаточного количества элементов, возвращает "массив недопустимой длины", любое другое исключение должно возвращать"поврежденные данные".


Пожалуйста, смотрите мой код ниже. Я считаю, что часть внутри "улова" - это то, где я ошибся, но мне нужна помощь, чтобы исправить это. Спасибо.

С уважением

Что я уже пробовал:

  public static string PointOfFailure(string[] employeeNames)
        {

            try
            {

                return employeeNames[3];

            }

            catch (Exception)

            {

                if (employeeNames.Length > 5)
                { return "Array not valid length"; }

                return "Corrupt Data";

            }


        }
    }
}

Richard MacCutchan

Почему вы тестируете длину массива больше 5? Это исключение будет происходить только в том случае, если имеется менее 4 записей.

Member 13302374

Я вижу. Я удалю это. Есть идеи, как я могу это изменить?

Prifti Constantine

В чем именно заключается ваша проблема в этом коде?

Member 13302374

"если массив не содержит достаточного количества элементов, верните "Array not valid length", любое другое исключение должно вернуть"Corrupt Data"."

Мотыга точно закодировал бы я это в часть catch (exception)? Часть выше кажется правильной

Prifti Constantine

Именно допущены... Просто замените "employeeNames.Длина > 5 "
в employeeNames.Длина <= 4

Или вы можете добавить предложение Else в Оператор if, чтобы он возвращал "поврежденные данные" в каждом другом случае. Он все еще делает то, что вы просите, но с предложением else он кажется немного более читабельным.

Member 13302374

Хм, все еще не работает

Prifti Constantine

Вы отладили свой код? Есть ли у него нужные вам данные?

Другим решением было бы использовать:
бросьте новое исключение ("поврежденные данные"); при нужном условии.
Я не вижу, насколько больше я могу помочь, так как не знаю логики этого, а также того, что вы тратите и почему это контрастирует с тем, что вы получаете.

1 Ответов

Рейтинг:
0

Satya Prakash Swain

<pre lang="c#">
public static string PointOfFailure(string[] employeeNames)
{

пробовать
{

return employeeNames[3];

}

улов (система.Класса indexoutofrangeexception е)

{
возвращение "массив не действительная длина";
}
catch (исключение)

{
возврат " поврежденных данных";
}

}
}
} несколько блоков catch могут быть там, чтобы обрабатывать определенный тип, например
System.IndexOutOfRangeException
... Другие для остальных все.


Member 13302374

Спасибо, это сработало, и я понимаю код.