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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> исключение в try...catch 
V
    Опции темы
AlexLogos
Дата 25.10.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

while ...
{
    try
    {
    //тут код
    }
    catch {}
}
 
как только возникает исключение цикл прерывается.
PM MAIL   Вверх
CYBERDREAM
Дата 25.10.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


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

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



Приветствую. странно но не должен. Дай весь код


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
AlexLogos
Дата 25.10.2010, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



если не должен то пока попробую другую проблемку решить. может она и есть загвоздка. спасибо.
PM MAIL   Вверх
Yagmort
Дата 26.10.2010, 14:49 (ссылка)    | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Используй вместо while () do 
синтаксис
при этом условие написанное в операторе do выполнится хотябы 1 раз 
Код

 do 
()
while()

try и cath созданы для того чтобы бы остановить программу при возникновении ошибки 

и синтаксис такой 

Код

try
{}
cath ()
{}
finally //он будет выполнятся всегда 
{}

попробуй функцией передать в блок while параметр а функцию вызывай в операторе finally. Может и прокатит, не пробовал не знаю.




PM MAIL   Вверх
gambit
Дата 26.10.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Цитата(Yagmort @  26.10.2010,  14:49 Найти цитируемый пост)
Используй вместо while () do 
синтаксис
при этом условие написанное в операторе do выполнится хотябы 1 раз 
код C#
 do 
()
while()

try и cath созданы для того чтобы бы остановить программу при возникновении ошибки 

и синтаксис такой 

код C#
try
{}
cath ()
{}
finally //он будет выполнятся всегда 
{}


шикарный ответ на поставленный вопрос
PM MAIL ICQ Skype   Вверх
CYBERDREAM
Дата 26.10.2010, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


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

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



а я то боялся что только я так подумал ))


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
gambit
Дата 26.10.2010, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



Цитата(AlexLogos @  25.10.2010,  12:17 Найти цитируемый пост)
может она и есть загвоздка. спасибо. 

А если дело не там, то посмотри данную модель:
Код

            try
            {
                for (int i = 0; i < 20; i++)
                {
                    try
                    {
                        Console.WriteLine(i.ToString());

                        if (i == 4)
                        {
                            throw new ArgumentException();
                        }

                        if (i == 9)
                        {
                            throw new Exception();
                        }
                    }
                    catch (ArgumentException)
                    {
                        Console.WriteLine("Ошибка");
                    }
                }
            }
            catch
            {
                Console.WriteLine("Мега ошибка");
            }


в данном коде на 4 итерации происходит ошибка которая здесь же и обрабатывается, после обработки цикл продолжается, а на 9 появляется ошибка которая в данном try не обработана, она обрабатывается выше, и в цикл уже не возвращается.
PM MAIL ICQ Skype   Вверх
Mephisto
Дата 27.10.2010, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


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

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



OMG!!! 
Yagmort, долго пытался понять твой ответ.

gambit, в примере catch без параметра. Так что там либо goto закрался какой, либо полнолуние меняет направление потока электронов в процессоре. В противном случае выхода из цикла быть не должно.

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


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



есть цикл, в нем try который ловит ArgumentException, на 4 шаге, кидается ArgumentException и тут же обрабатывается, после чего цикл продолжается. На 9 шаге кидается Exception, идем в блок catch и видим что здесь мы его обработать не можем, ищем выше по стеку catch который может обработать такую ошибку, для этого должен быть

catch (Exception)
{

}
или c# позволяет не писать конкретную ошибку в скобках, тогда считается что будет ловится Exception, вот мы выше по стеку и обнаруживаем такой блок, заходим в него, обрабатываемся, и все, назад по стеку мы уже не пойдем, только вперед. А впереди в данном случае ничего нет.
Так что все логично.

Цитата(Mephisto @  27.10.2010,  18:40 Найти цитируемый пост)
gambit, в примере catch без параметра.

про это написал.
Цитата(Mephisto @  27.10.2010,  18:40 Найти цитируемый пост)
Так что там либо goto закрался какой

брррр, не переношу этого слова
Цитата(Mephisto @  27.10.2010,  18:40 Найти цитируемый пост)
либо полнолуние меняет направление потока электронов в процессоре

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

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


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

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


 




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


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

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