| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > try catch finally вызов исключения, и ссылка |
| Автор: Yagmort 10.2.2011, 11:32 | ||
Кто сможет обясните для чего нужен операвтор trohw в целом? Как можно принудительно вызвать исключение в блоке try, чтобы было правильно, т.к. я использовал такую конструкцию:
И как в блоке 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 | ||
Понял, что 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 | ||
А если у меня идет внутри блока try { int a=Greys(b), // этот создает исключение не зависимо от меня. if (a==2) c=Convert.ToString("sss");// тут я создаю сам } |
| Автор: Экскалупатор 10.2.2011, 14:26 |
| поставь брекпоинт на cath и в дебагере посмотри что он тебе говорит. там есть вся информация. Добавлено через 1 минуту и 20 секунд тут ты тоже не сам создаешь. сам ты создаешь когда пишешь throw new ... |