Задать вопрос

Что лучше: обработать исключение или не вызывать его?

Допустим у меня есть список
var list = new List<int> { 1, 2, 3, 4 };
и как будет правильнее сделать?
Так:
int getValue(int index) {
    try {
        return list[index];
    }
    catch (ArgumentOutOfRangeException ex) {
        return -1;
    }
}

или так:
int getValue(int index) {
    if (index < list.Count) {
        return list[index];
    }
    else {
        return -1;
    }
}

или разницы нет?
  • Вопрос задан
  • 85 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Software-testing.ru
    Программирование на C# для тестировщиков
    10 недель
    Далее
Решения вопроса 3
mindtester
@mindtester Куратор тега C#
http://iczin.su/hexagram_48
практикуйте замеры времени исполнения.. и вопросы отпадут

ps для async схем все может сильно меняться
Ответ написан
Комментировать
freeExec
@freeExec
Участник OpenStreetMap
Тут нет лучше, вопрос что вам нужно. Исключение вам всё равно придётся где-то обработать, и вы сами решаете на каком уровней логики не критично не получить результат.
Тот же List не может подсунуть вам фейк в виде -1, потому что он не знает, что это какое-то не валидное значение в вашем случае.
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Есть практика ловить исключения на самом высоком уровне, и уже там выводить сообщение, ниже код только кидает исключения. Это поможет вам не разрушить приложение и что то внятное сообщить пользователю.
Но лучше их избегать исключения довольно дорогая операция
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы