Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > try catch finally вызов исключения, и ссылка


Автор: Yagmort 10.2.2011, 11:32
Кто сможет обясните для чего нужен операвтор trohw в целом? Как можно принудительно вызвать исключение в блоке try, чтобы было правильно, т.к. я использовал такую конструкцию:

Код

try
{
 int k=Convert.ToInt32('d'); 
}
catch (Exception e)// как узнать, какое свойство, или метод тут присваивать заместо Exception, в каких ситтуациях какой ?
{
string k=Convert.ToString(e);
}
 

И как в блоке cath узнать какая строка вызвала исключение и каков сам текст ошибки, положить ошибку и номер строки в переменную строкового типа ?

Автор: jonie 10.2.2011, 12:50
http://msdn.microsoft.com/en-us/library/ms173160.aspx
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=73742594-DB15-4703-8892-75A569C4EB83&displaylang=en

Автор: Yagmort 10.2.2011, 13:04
Разобралсо вроде сам с оператором throw

Автор: tartar 10.2.2011, 13:38
Да, он будет обрабатываться в catch,
если же ты используешь его в catch оно уйдетвыше на уровень.


то есть у тебя 


void a()
{
try 
{
throw new...
}
catch(Exception ex)
{
  здесь ты можешь обработать или throw new exception
}
}

void b()
{
 try 
{
 a();
}
catch(Exception ex)
{
  если в кэтче а ты запускаешь новое исключение,
 то и здесь ты попадешь сюда, иначе исключение потеряется в
 кэтче метода а
}
 
}


Автор: Yagmort 10.2.2011, 13:48
Цитата(tartar @ 10.2.2011,  13:38)
Да, он будет обрабатываться в catch,
если же ты используешь его в catch оно уйдетвыше на уровень.


то есть у тебя 


void a()
{
try 
{
throw new...
}
catch(Exception ex)
{
  здесь ты можешь обработать или throw new exception
}
}

void b()
{
 try 
{
 a();
}
catch(Exception ex)
{
  если в кэтче а ты запускаешь новое исключение,
 то и здесь ты попадешь сюда, иначе исключение потеряется в
 кэтче метода а
}
 
}

Понял, что throw тупо вызывает новое исключение, которое я ему задаю, и он выдает мне сообщение, от того, какое исключение я ему передал. А если используется блок такой 

try
{
int a=Convert.ToString("sss"),
     b=Convert.ToString("sss"),
     c=Convert.ToString("sss");
} 
catch (InvalidCastException ice)
{
//как тут узнать что вызвало исключение ??
//например хочу так if (a...) {MessageBox.Show("a вызвало исключение")}
//if (b...) {MessageBox.Show("б вызвало исключение")}
//if (с...) {MessageBox.Show("ц вызвало исключение")}
}

и чтоб программа остановилась в куске catch оюязательно

Автор: Экскалупатор 10.2.2011, 14:06
в ексцепшене есть свойство "сообщение" в котором идет описание ошибки. если ты сам делаешь исключение то задай в сообщении то что тебе нужно.

Автор: Yagmort 10.2.2011, 14:22
Цитата(Экскалупатор @ 10.2.2011,  14:06)
в ексцепшене есть свойство "сообщение" в котором идет описание ошибки. если ты сам делаешь исключение то задай в сообщении то что тебе нужно.

А если у меня идет внутри блока
try 
{
    int
     a=Greys(b), // этот создает исключение не зависимо от меня.
     if (a==2)
      c=Convert.ToString("sss");// тут я создаю сам
}

Автор: Экскалупатор 10.2.2011, 14:26
поставь брекпоинт на cath и в дебагере посмотри что он тебе говорит. там есть вся информация.

Добавлено через 1 минуту и 20 секунд
Цитата(Yagmort @  10.2.2011,  13:22 Найти цитируемый пост)
      c=Convert.ToString("sss");// тут я создаю сам

тут ты тоже не сам создаешь. сам ты создаешь когда пишешь throw new ...

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