PDA

View Full Version : چگونه خطاهای مختلف را در #C مدیریت کنیم



mohsen_zelzela00
چهارشنبه 15 شهریور 1391, 09:55 صبح
با سلام خدمت اساتید محترم
می خواستم بپرسم چگونه می توانم خطاهای مختلف را در #C مدیریت کنیم مثلاً وقتی بخواهیم یک رکوردی را حذف کنیم و آن رکورد کلید خارجی باشد یک خطا از نوع
SQLException رخ می دهد ولی چگونه می توان دسته بندی خطاهای دیگر رو بدست اورد؟
ممنون میشم اسانید محترم راهنمایی کنند

nilmil_nil
چهارشنبه 15 شهریور 1391, 10:24 صبح
با کد های ارور کار کن

mohsen_zelzela00
چهارشنبه 15 شهریور 1391, 10:43 صبح
ما زمانی که Exception کلی رو بخواهیم مدیریت کنیم ErrorNumber رو به ما بر نمی گردونه



try
{
// delete record in database
}
catch (Exception ex)
{
int error = // how to get this code exception?
}

nilmil_nil
چهارشنبه 15 شهریور 1391, 10:54 صبح
این یه نمونه

try
{
com.CommandText = sql;
err = com.ExecuteNonQuery();

}
catch (SqlException exp)
{
if (exp.Number == 547)// for delete
{
MessageBox.Show("شما نمیتوانید این گزینه را حذف کنید\n این گزینه توسط سایر بخش ها استفاده شده است. ", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (exp.Number == 3609)// for duplicate
{
MessageBox.Show("این نام قبلا ثبت شده است\n عملیات لغو شد ", "خطا تکراری", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
MessageBox.Show(exp.Message, "شماره خطا :" + exp.Number.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}

mohsen_zelzela00
چهارشنبه 15 شهریور 1391, 12:03 عصر
دوست عزیز فکر کنم متوجه منظور من نشدید. من دارم با EF کار می کنم که قاعدتاً با خطاهای خاص EF برمی خورم و نمی دونم که اون خطاها توی کدوم دسته از Exceptionها هستند منطورم از دسته اینه که وقتی داریم با SQL کار می کنیم وقتی خطایی رخ می دهد حتماً جز دسته SqlException هستند سوال من حالا اینه که من چگونه می تونم دسته خطاهای مختلف رو بدست بیارم؟؟ ممنونم

nilmil_nil
چهارشنبه 15 شهریور 1391, 15:03 عصر
خوب وقتی یه خطا رخ داد ببینید از چه نوعیه
یعنی از try استفاده نکنید ببیند نوع Exeption چیه
بعد اونه Catch کنید