Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > [C#] Обработка, Ошибок


Автор: Zastra 26.12.2009, 12:55
Привет, помогите (или объясните) с обработкой ошибок. Вот условие, метод SetBallance, изменяющий остаток на счету, должен генерировать исключительную ситуацию в случае попытки установить отрицательный баланс. Тоесть переменная perevod может быть как отрицательная, так и положительная, но если она отриц., то не может по модулю быть больше переменной ballance.(Чтобы балланс счета не стал <0)
Тоесть вот так, а надо с обработкой:


Код

        public double SetBallance(double ballance) 
        {
            double perevod;

            
            if (perevod > 0)
                ballance += perevod;
            if (System.Math.Abs(perevod)>ballance) 
                Console.WriteLine("Нельзя снять больше денег, чем есть");


            return ballance;

        }

Автор: mrbrooks 26.12.2009, 13:36
Zastra, http://msdn.microsoft.com/ru-ru/library/0yd65esw.aspx

Автор: wester 26.12.2009, 13:42
Цитата

должен генерировать исключительную ситуацию в случае попытки установить отрицательный баланс.

на мой взгляд лучше сделать условие if, а не блок try catch

вот тут есть табличка с тестами http://www.blackwasp.co.uk/SpeedTestTryCatch.aspx

Автор: Dobermann 26.12.2009, 13:57
Код

double perevod, ballance, temp;
try 
    {    
              //  temp = ballance;
        ballance += perevod;
    }
finally
    {
        if (ballance < 0)
        Console.WriteLine("Нельзя снять больше денег, чем есть");
             //   SetBallance(temp);
    }
return ballance;    

Автор: Экскалупатор 26.12.2009, 14:14
Dobermann, это ты какую то лажу сделал. называется лишь бы с блоками было...

Автор: Dobermann 26.12.2009, 14:16
Экскалупатор, ну давай уже, говори что не так!!

Автор: Экскалупатор 26.12.2009, 14:30
Dobermann, ммм, да собсно все не так, try должен  вызывать исключение. catch должен ловить.  по условию задачи при попытке сделать баланс отрицательным должно вываливаться исключение и баланс меняться не должен. а у тебя что происходит? баланс меняется в любом случае, но потом просто предупреждается что он отрицательный.

Автор: Zastra 26.12.2009, 15:29
wester, я бы с радостью, но сказали сделать так.


mrbrooks,  не могу заходить на сайты Майкрософт, из-за кхэ-кхэ версии винды )


Экскалупатор, а как правильно? =)

Автор: Dobermann 26.12.2009, 15:43
Цитата(Zastra @  26.12.2009,  15:29 Найти цитируемый пост)
не могу заходить на сайты Майкрософт, из-за кхэ-кхэ версии винды )

чего?! первый раз такое слышу!

Автор: Экскалупатор 26.12.2009, 15:45
как то так вроде, если конечно я все правильно понял:
использование:
Код

public double SetBallance(double ballance, double perevod)
        {
            try
            {
                if ((ballance-Math.Abs(perevod))>=0)
                {
                    ballance += perevod;
                }
                else
                {
                    throw new BalansException("Баланс не может быть отрицательным");
                }
            }
            catch (BalansException exc)
            {
                Console.WriteLine(exc.Message + "Нельзя снять больше денег, чем есть");
            }
            return ballance;
        }
 


собсна класс самого исключения:
Код

    class BalansException : ApplicationException
    {
        public BalansException()
            : base()
        {
        }
        public BalansException(string str)
            : base(str)
        {
        }
        public override string ToString()
        {
            return Message;
        }
    }


Цитата(Zastra @  26.12.2009,  14:29 Найти цитируемый пост)
не могу заходить на сайты Майкрософт, из-за кхэ-кхэ версии винды

я думаю тут у многих такая "проблема", но мне она не мешает...

Автор: Zastra 26.12.2009, 16:33
Экскалупатор, спасибо большое!)

Другой причины, почему н заходит на их сайты с 4 браузеров, я не вижу)

Автор: Экскалупатор 26.12.2009, 16:50
Цитата(Zastra @  26.12.2009,  15:33 Найти цитируемый пост)
Другой причины, почему н заходит на их сайты с 4 браузеров, я не вижу) 

а чем эти браузеры это мотивируют? что говорят?

Автор: Zastra 27.12.2009, 12:55
Обычное сообщение:

Internet Explorer не может отобразить эту веб-страницу 
   
   Возможные причины:
Нет подключения к Интернету. 
На веб-узле возникли неполадки. 
Возможно, сделана опечатка в адресе. 
 
   Попробуйте сделать следующее: 
     Проверьте подключение к Интернету. Попробуйте посетить другой веб-узел, чтобы убедиться в наличии подключения.  
 
     Заново введите адрес.  
 
     Перейдите на предыдущую страницу. 
 
     Подробнее 
 

Автор: jonie 28.12.2009, 09:05
тут форум программистов, с вопросами "почему не работает браузер" обращайтесь, пожалуйста, к сисадминам.

по поводу обработки эксепшенов настоятельно рекомендую ознакомится с гайдом: http://www.microsoft.com/downloads/details.aspx?familyid=73742594-DB15-4703-8892-75A569C4EB83&displaylang=en от ребят из майкрософта (группа patterns & practice)

Автор: Zastra 30.12.2009, 21:34
jonie, если вы не заметили, то подобных вопросов тут никто не задавал ,а по ссылке вашей заходить не хочет, попробую с другого кома. 

Автор: горемыка 12.1.2010, 14:16
Экскалупатор а зачем модуль? сделать просто проверку на сложение 
(ballance+perevod)>=0)
если брать модуль то при положительном perevod больше ballance он тоже выкинет exception
так мне кажется

Автор: Dobermann 12.1.2010, 16:32
Цитата(Zastra @  30.12.2009,  21:34 Найти цитируемый пост)
jonie, если вы не заметили, то подобных вопросов тут никто не задавал ,а по ссылке вашей заходить не хочет, попробую с другого кома.  


Цитата(jonie @  28.12.2009,  09:05 Найти цитируемый пост)
от ребят из майкрософта (группа patterns & practice)

А это серьезные парни!

Автор: gambit 12.1.2010, 16:42
Цитата(Zastra @  26.12.2009,  16:33 Найти цитируемый пост)
Другой причины, почему н заходит на их сайты с 4 браузеров, я не вижу) 

офтопик, попробуй провести поиск вируса Kido, именно он блокирует сайт мелкомягких и еще целую кучу других

Автор: Экскалупатор 12.1.2010, 21:31
горемыка, да согласен.

Автор: Dobermann 13.1.2010, 13:01
Цитата(gambit @ 12.1.2010,  16:42)
Цитата(Zastra @  26.12.2009,  16:33 Найти цитируемый пост)
Другой причины, почему н заходит на их сайты с 4 браузеров, я не вижу) 

офтопик, попробуй провести поиск вируса Kido, именно он блокирует сайт мелкомягких и еще целую кучу других

hosts

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)