Как кто-то уже сказал, «Исключения» в языках программирования предназначены для исключительных случаев, а не для настройки логического потока вашей программы.Например, в случае данного фрагмента кода вашего вопроса, вы должны увидеть, каково намерение включающего метода или функции.Проверяет array.length < countNum
часть бизнес-логики или нет.Если да, то если поставить пару if/else
, есть путь.Если это условие не является частью бизнес-логики и намерение включающего метода является чем-то другим, тогда напишите код для этого чего-то еще и выведите исключение вместо того, чтобы идти по пути if/else
.Например, вы разрабатываете приложение для школы, и в вашем приложении есть метод GetClassTopperGrades
, который отвечает за часть бизнес-логики, которая требует вернуть проходные баллы учащегося с наивысшими оценками в определенном классе.определение метода / функции будет выглядеть примерно так:
int GetClassTopperGrades(string classID)
В этом случае целью метода является возвращение оценок для действительного класса, который всегда будет положительным целым числом, согласно бизнес-логикеприложения.Теперь, если кто-то вызывает ваш метод и передает строку мусора или null
, что он должен делать?If должен выдать исключение, например, NullReferenceException
или 'InvalidArguementException', потому что это был исключительный случай в данном конкретном контексте.В методе предполагалось, что всегда будет передан действительный идентификатор класса, а NULL или пустая строка НЕ является действительным идентификатором класса (отклонение от бизнес-логики).
Кроме того, в некоторых условиях есть нет предварительных знаний о результатах данного кода и нет определенного способа предотвращения исключительной ситуации .Например, при запросе к некоторой удаленной базе данных, если сеть выходит из строя, у вас нет никакой другой опции, кроме выдачи исключения.Вы бы проверили сетевое соединение перед выполнением каждого SQL-запроса к удаленной базе данных?