Обработка исключительных ситуаций (блок try и catch) - C#
Формулировка задачи:
Еще раз здравуствуйте! Опять я на пути изучения великого и могучего Си-шарпа, и опять наткнулся на подвоный камень.
В программе вычисления значения функции на заданном интервале с заданным шагом должно обрабатываться исключение деления на ноль. В данной функции должно произойти при х=0,5. Однако, программа совершенно не хочет заходить в блок Cath, чтобы обработать исключение и вывести сообщение об этом. Вместо этого, он в ответе выдает "бесконечность".
static void Main(string[] args)
{
Console.WriteLine("Введите интервал аргумента функции [a,b] с шагом h");
Console.Write("a=");
double a = double.Parse(Console.ReadLine());
Console.Write("b=");
double b = double.Parse(Console.ReadLine());
Console.Write("h=");
double h = double.Parse(Console.ReadLine());
for (double i = a; i <= b; i = i + h)
{
if (i < 0.5)
{
Console.WriteLine("y({0})=Функция неопределена", i);
continue;
}
try
{
Console.WriteLine("y({0})={1}", i, i / Math.Sqrt(2 * i - 1));
}
catch (DivideByZeroException)
{
Console.WriteLine("y({0})=Деление на ноль", i);
}
}
Console.ReadLine();
}
}
}Решение задачи: «Обработка исключительных ситуаций (блок try и catch)»
textual
Листинг программы
try
{
double temp = Math.Sqrt(2 * i - 1);
if (temp == 0)
throw new DivideByZeroException();
Console.WriteLine("y({0})={1}", i, i / temp);
}
catch (DivideByZeroException)
{
Console.WriteLine("y({0})=Деление на ноль", i);
}