Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2014, 15:38   #1
CROWN
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 12
По умолчанию Исключения c#

Всем привет.

Не могу найти ошибку в программе, кто может подсказать как обработать исключение, если пользователь вводит вместо цифр буквы или другие символы?

Код:
 static void Main(string[] args)
        {
            Console.WriteLine("Введите x: ");

            double x = double.Parse(Console.ReadLine());

            Console.WriteLine("Введите k: ");
            int k = int.Parse(Console.ReadLine());

            Console.WriteLine("Введите длину массива : ");
            int l = int.Parse(Console.ReadLine());

            do
            {
                double q = Chislox(x); 

            } 
            while (x == 0);

            double z = Massiv(k, x, l);
            Console.WriteLine(z);
            Console.ReadLine();
        }


        public int ChisloK(int k)
        {
            int i = 0;
            try
            {

                if (k < 0 || i != Convert.ToInt32(k)) throw new NumbersNotFound();

            }
            catch (NumbersNotFound)
            {

            }
            return k;
        }

        public static double Chislox(double x)
        {


            try
            {
                if (x == 0) throw new NumbersNotFound();

                if (x == 0) throw new DivideByZeroException();

            }
            catch (NumbersNotFound)
            {


            }
            catch(DivideByZeroException)
            {
            }

            return x;
        }

        public static double Massiv(int k, double x, int l)
        {
            double sum = 0;
            try
            {
                double[] mass = new double[l];

                for (int i = 1; i <= k; i++)
                {
                    sum += (Math.Pow(-1, i + 1) / (2 * x - 1));
                    mass[i - 1] += sum;
                }


            }
            catch (IndexOutOfRangeException)
            {


            }
            return sum;
        }
Мое исключение

Код:
public class NumbersNotFound : ApplicationException
    {

         public void MyExeption()
         {
              Console.WriteLine("Введено неправильное значение");

         }
    }
У меня создано свое исключение которое должно вызываться если пользователь ввел вместо цифр другие символы или буквы но как сделать проверку ввода не знаю.
CROWN вне форума Ответить с цитированием
Старый 20.12.2014, 16:15   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте int.TryParse
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.12.2014, 18:02   #3
CROWN
Пользователь
 
Регистрация: 04.06.2014
Сообщений: 12
По умолчанию

Что - то не получается
CROWN вне форума Ответить с цитированием
Старый 21.12.2014, 18:29   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Чего не получается? Если int.TryParse, то вам не надо исключение ловить.

Код:
int k;
if (!int.TryParse(Console.ReadLine(), out k))
{
    Console.WriteLine("некорректное значение");
    return;
}
Console.WriteLine("корректное значение");
Ну а если уж хотите исключения, то ловите их, кто мешает. Список выбрасываемых методом исключений тут http://msdn.microsoft.com/en-us/libr...vs.110%29.aspx
Код:
            int k;

            try
            {
                k = int.Parse(Console.ReadLine());
            }
            catch (FormatException ex)
            {
                Console.WriteLine("Format " + ex.Message);
                return;
            }
            catch (OverflowException ex)
            {
                Console.WriteLine("Overflow " + ex.Message);
                return;
            }
Или можно Exception ловить для любых исключений, но не всегда стоит так делать.

Код:
            try
            {
                k = int.Parse(Console.ReadLine());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return;
            }
(во всех случаях вместо return естественно может быть любое другое нужное вам действие, повтор ввода, игнорирование и т.п.)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 21.12.2014 в 18:31.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исключения в Qt iukash Qt и кроссплатформенное программирование С/С++ 6 16.04.2011 18:54
Java. Исключения Novi4ok_11 Общие вопросы по Java, Java SE, Kotlin 2 28.03.2011 23:21
Исключения C++ Impuls1989 Помощь студентам 2 04.03.2011 00:51
Исключения yurik1982 Фриланс 9 16.02.2010 00:34
Исключения Rifler Общие вопросы Delphi 5 12.11.2008 00:29