Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C#] Обработка, Ошибок, try {...} catch{...} 
:(
    Опции темы
Zastra
Дата 26.12.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



Привет, помогите (или объясните) с обработкой ошибок. Вот условие, метод 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;

        }

PM MAIL   Вверх
mrbrooks
Дата 26.12.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 17
Всего: 306



PM MAIL   Вверх
wester
Дата 26.12.2009, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 675
Регистрация: 27.2.2009

Репутация: 3
Всего: 13



Цитата

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

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

вот тут есть табличка с тестами http://www.blackwasp.co.uk/SpeedTestTryCatch.aspx
PM MAIL   Вверх
Dobermann
Дата 26.12.2009, 13:57 (ссылка)    | (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Код

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

PM   Вверх
Экскалупатор
Дата 26.12.2009, 14:14 (ссылка) |    (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Dobermann, это ты какую то лажу сделал. называется лишь бы с блоками было...
PM MAIL ICQ   Вверх
Dobermann
Дата 26.12.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Экскалупатор, ну давай уже, говори что не так!!
PM   Вверх
Экскалупатор
Дата 26.12.2009, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



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

Это сообщение отредактировал(а) Экскалупатор - 26.12.2009, 14:32
PM MAIL ICQ   Вверх
Zastra
Дата 26.12.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



wester, я бы с радостью, но сказали сделать так.


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


Экскалупатор, а как правильно? =)
PM MAIL   Вверх
Dobermann
Дата 26.12.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



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

чего?! первый раз такое слышу!
PM   Вверх
Экскалупатор
Дата 26.12.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



как то так вроде, если конечно я все правильно понял:
использование:
Код

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 Найти цитируемый пост)
не могу заходить на сайты Майкрософт, из-за кхэ-кхэ версии винды

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

Это сообщение отредактировал(а) Экскалупатор - 26.12.2009, 16:08
PM MAIL ICQ   Вверх
Zastra
Дата 26.12.2009, 16:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



Экскалупатор, спасибо большое!)

Другой причины, почему н заходит на их сайты с 4 браузеров, я не вижу)
PM MAIL   Вверх
Экскалупатор
Дата 26.12.2009, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



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

а чем эти браузеры это мотивируют? что говорят?
PM MAIL ICQ   Вверх
Zastra
Дата 27.12.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



Обычное сообщение:

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

PM MAIL   Вверх
jonie
Дата 28.12.2009, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 6
Всего: 118



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

по поводу обработки эксепшенов настоятельно рекомендую ознакомится с гайдом: http://www.microsoft.com/downloads/details...;displaylang=en от ребят из майкрософта (группа patterns & practice)

Это сообщение отредактировал(а) jonie - 28.12.2009, 09:06


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Zastra
Дата 30.12.2009, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 13.12.2009

Репутация: нет
Всего: нет



jonie, если вы не заметили, то подобных вопросов тут никто не задавал ,а по ссылке вашей заходить не хочет, попробую с другого кома. 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0870 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.