PDA

View Full Version : تعیین نوع exception برای integer



بیتافرهی
پنج شنبه 24 مرداد 1387, 21:22 عصر
با سلام

من توی برنامم یه textbox دارم که معرف شماره id است و قراره مقدار داخل این text box ،توسط دستوز ( convert.toint16(textbox1.text به integer تبدیل شود و داخل متغیری از نوع integer قرار گیرد.مثلا:


int x;
x = Convert.ToInt16(textBox1.Text);


مشکلم اینجاست که اگه کاربر به جای عدد ،حرف وارد کند،برنامه قفل می کند.
برای رفع این مشکل به فکرم رسید که از exception استفاده کنم.ولی تا به حال از این روش استفاده نکرده ام و طریقه ی استفاده و نتیجه ی آخر استفاده از این کار را ندارم فقط در موردش یه چیزایی شنیدم.(هدف من از استفاده از این روش این است که در صورت مشکل برنامه به کاربر اعلام کند و قطع نشود)
لطفا exception مخصوص این مورد و کد مورد استفاده در این شرایط را به من بگویید.

hdv212
پنج شنبه 24 مرداد 1387, 21:40 عصر
برای این روش راه بهتری هم هست، شما میتونید مقدار textBox1.Text رو توسط متد استاتیکی که در نوع int
وجود داره بررسی کنید که آیا این مقدار قابل تبدیل به int هست یا نه، بعد اگه بود خودش مقدار رو تبدیل میکنه و در متغیری که ما بهش پاس میدیم (با ذکر کلمه ی کلیدی out) قرار میده :

int i;
if (int.TryParse(this.textBox3.Text, out i))
MessageBox.Show(i.ToString());
در این نمونه کد، اگر شرط برقرار باشه، پیغام مورد نظر نمایش داده میشه.

رضا جاسبی
جمعه 25 مرداد 1387, 00:06 صبح
در مورد Exception باید اینطوری عمل کنی



try
{
Your Code Here
}
Catch (Exception err)
{
// Handle Error : for Example
MessageBox.Show(err.Message,"Error",Other Message Box Parameters if you want);
}


در اینجا هر خطایی که در بلاک مربوط به try برخورد کنی به بخش catch مراجعه میشود و خطای مورد نظر که در متغیر err هست پردازش می شود.
البته به نظر من بهتره که با کنترل مقادیر وارد شده در textbox اجازه وارد کردن حرف رو ندی و یا اینکه قبل از تبدیل به عدد Integer کنترل کنی که اگر حرف درش بود پیغام فارسی مناسب بدهد.

mth_sh89
جمعه 25 مرداد 1387, 00:35 صبح
من از هم با آقای جاسبی موافقم

فقط به جای استفاده از message box میتونی یه label به فرمت اضافه کنی که کدش اینجوری میشه


try
{
Your Code Here
}
Catch (Exception err)
{
// Handle Error : for Example
label1.Text+=Error.Message;
}

اگر هم توصیح بیشتری در مورد خطای بوجود اومده بخوای میتونی به جای Message بنویسی ToString();
البته این رو هم بگم که این به سلیقه هرکسی بستگی داره:لبخندساده:

FBAFC590
جمعه 25 مرداد 1387, 01:10 صبح
با اجازه از بزرگان
این هم یه راه دیگه ست

try
{
Your Code Here
}
Catch (FormatException)
{
این exeption
برای این خطا ست


}