1

Тема: Підкажіть помилку

try {
                if ((e->KeyChar >= '0') && (e->KeyChar <= '9')) 
                    return;
             
                if (e->KeyChar != (char)8) 
                    e->Handled = true;
            }
            catch (System::FormatException^ e) {
                if ((e->KeyChar < '0') && (e->KeyChar > '9')) 
                    MessageBox::Show("Помилка вхідних даних.\n В даному полі потріно вказати рік!","Рік випуску", MessageBoxButtons::OK, MessageBoxIcon::Warning);
                textBox2->Focus();
            }

підкажіть будь-ласка чому цей Exeption не підходить.

2

Re: Підкажіть помилку

Не знаю, як Вам "підказати помилку", і що Ви маєте на увазі "Exception не підходить", але для мене це виглядає дивним:

if ((e->KeyChar < '0') && (e->KeyChar > '9')) 

ця умова ніколи не виконується (значення менше 0 і в той же час більше за 9).

Подякували: koala1

3 Востаннє редагувалося Ghoul (18.06.2015 12:29:03)

Re: Підкажіть помилку

тит зчитуються дані з клавіатури і всі клавіші які не входять в діапазо від 0 до 9 рахуються хибними. І Exeption це виняткова ситуація.

4

Re: Підкажіть помилку

А тепер ще розкажіть нам, що таке e, звідки воно береться і в якому місці, на вашу думку, має вийняткова ситуація випадати. А то з телепатією на форумі певні проблеми.

5 Востаннє редагувалося mich_retten (18.06.2015 12:55:15)

Re: Підкажіть помилку

Ghoul написав:

тит зчитуються дані з клавіатури і всі клавіші які не входять в діапазо від 0 до 9 рахуються хибними. І Exeption це виняткова ситуація.

Дякую, що пояснили що таке Exception. Тепер і я знаю. Але тоді поясніть яка частина Вашого коду може throw exception саме типу FormatException.

Процитую msdn:

The exception that is thrown when the format of an argument is invalid, or when a composite format string is not well formed.

У Вашому коді ніде не зустрічається форматування, тому цей иксепшн ніколи не викинеться. Але нічого страшного не відбудеться, просто мертва частина коду. Людям буде що почитати :)

6

Re: Підкажіть помилку

Ghoul написав:
try {
                if ((e->KeyChar >= '0') && (e->KeyChar <= '9')) 
                    return;
             
                if (e->KeyChar != (char)8) 
                    e->Handled = true;
            }
            catch (System::FormatException^ e) {
                if ((e->KeyChar < '0') && (e->KeyChar > '9')) 
                    MessageBox::Show("Помилка вхідних даних.\n В даному полі потріно вказати рік!","Рік випуску", MessageBoxButtons::OK, MessageBoxIcon::Warning);
                textBox2->Focus();
            }

підкажіть будь-ласка чому цей Exeption не підходить.

Тут немає де вилітати ексепшинам. Прочитайте детальніше, як працює try-catch.
Раджу Вам краще не гратись тут з ексепшинами, а просто і банально виводити повідомлення про помилку тоді, коли виконається відповідний if (або не виконається, залежить від Вашого бажання)