Я действительно думаю, что получил его, но мне нужно дополнительное подтверждение от вас, потому что я хочу понять это и сделать это правильно! Я до сих пор не нашел прямой линии в абстрагировании обработки исключений и логического кода. Поэтому я пытаюсь приблизиться к нему с вашей помощью.
Давайте рассмотрим, как я вызываю функцию "foo (0)":
// Code 1
int foo(int a)
{
int value = 10;
return value/a;
}
Это приведет к исключению "деление на ноль".
Но если параметр "a" должен находиться внутри указанного диапазона c, чтобы функция "bar" (Код 2) могла возвращать действительный результат (например, в диапазоне [5 ... 10]), вызов его со значением вне этого диапазона (например, 3), конечно, не вызовет исключения, если я не определю его. Так что для этой ситуации я определяю исключение, не так ли?
Например, таким образом:
// Code 2
void bar(int b)
{
if (b < 5)
{
throw new ArgumentException("Your input parameter is below minimum acceptable value");
}
else if (b > 10)
{
throw new ArgumentException("Your input parameter is above maximum acceptable value");
}
else
{
output(b);
}
}
или для этого не следует использовать исключения (ну, я думаю, они здесь именно для этой цели) и я бы предпочел сделать это таким образом?
// Code 3
int bar(int b)
{
int error = 0
if (b < 5)
{
error = -1;
}
else if (b > 10)
{
error = -2;
}
else
{
output(b);
}
return error;
}
Спасибо за ваш ввод (ы).
Приветствия
(причина, почему я спрашиваю потому что у меня есть исходный код выпущенного программного обеспечения передо мной, у которого есть и то и другое. У меня нет большого опыта в OOP, следовательно, ни в «try-catch». Я прошел, это topi c очень неправильно понято. И я предполагаю, что разработчик программного обеспечения передо мной действительно неправильно понял. Скажите мне, если я не прав.)