نوشته شده توسط
mahdi5121
سلام...
می شه یه Exception رو بیرون از یک Throw ,Try.....Catch کرد؟
منظورم اینه که چرا نمی شه این کد رو :
try
{
if (int.Parse(textBox1.Text) == 0)
{
throw new System.Exception("Your Number is equals then zero");
}
else
{
throw new System.Exception("Your Number is bigger then zero");
}
}
catch (System.Exception err)
{
MessageBox.Show(err.Message);
}
این مدلی نوشت؟
if (int.Parse(textBox1.Text) < 0)
{
throw new System.Exception("Yor Number is Less Then zero");
}
//----------------------------
try
{
if (int.Parse(textBox1.Text) == 0)
{
throw new System.Exception("Your Number is equals then zero");
}
else
{
throw new System.Exception("Your Number is bigger then zero");
}
}
catch (System.Exception err)
{
MessageBox.Show(err.Message);
}
کاملا میشه، فقط مسئله اینجاس که کد دومی که نوشتی 2بار expetion رو throw میکنه ولی یک بار catch میشه و یکیش unhandled میمونه و اون پیغامی که دیدیو نشون میده. ببین کاربرد اینی که تو میخوای (یعنی بیرون از بلاک try...catch بخوای exeption ای رو throw کنی) واسه جایی هست که تو بخوای یه تابع یا متدی بنویسی و تو حالت خاصی بدونی ممکنه با مشکل مواجه شه (مثلا اگه به طور ناخواسته ارتباط با اینترنت قطع شد) اینجوری یه exeption پرتاب میکنی و تو توضیحات تابعی که نوشتی میگی که این تابع ممکنه فلان exeption رو throw کنه تا کاربری که میخواد از تابع تو استفاده کنه بعدا اون رو تو یه بلاک try...catch قرار بده که اگه exeption ات رخ داد اونو handle کنه. درست مثل توابع .net ای که خودتم ازشون اینهمه استفاده می کنی و اونارو تو try...catch قرار میدی. خلاصه هر exeption ای باید آخر یه جا به یه catch برسه و handle شه تا این error که میبینیو نده و برنامه تا آخر پیش بره.