PDA

View Full Version : سوال: گرفتن نوع exception بیرون کلاس در صورت وجود



sanaz.dadkhah
چهارشنبه 12 تیر 1392, 10:24 صبح
سلام من کلاسی آماده کردم که احتمال دارد در بعضی موارد خطایی اتفاق در آن بیفتد که این خطا ها را با try catch میگیرم اما الان نیاز دارم که در صورت وجود این خطا ها به بیرون برنامه یعنی در جایی که شی ساختم برود
میشه بهم بگین که چگونه می تونم این کار را انجام بدهم (با delegate یا event ) میشه؟

hamid_hr
چهارشنبه 12 تیر 1392, 11:19 صبح
به نظر من با event ميشه اين كار رو كرد
وقتي خطا اتفاق افتاد يك رويداد اجرا بشه
حالا اگه جايي لازم داشتي وقتي از روي كلاس يه نمونه ميسازي اون رويدادم براش hendler ميكني

sanaz.dadkhah
چهارشنبه 12 تیر 1392, 12:32 عصر
میشه یک نمونه برام بگین یا یک جایی هدایتم کنید؟

hamid_hr
چهارشنبه 12 تیر 1392, 12:38 عصر
http://barnamenevis.org/showthread.php?406063-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%D8%AF%D9%88-%D9%81%D8%B1%D9%85-%D9%85%D8%AB%D9%84-%D9%BE%D9%86%D8%AC%D8%B1%D9%87-find-%D8%AF%D8%B1-notepad&p=1806527&viewfull=1#post1806527

اين يك نمونه از استفاده از رويداد هستش

sanaz.dadkhah
چهارشنبه 12 تیر 1392, 13:55 عصر
میشه توضیح بدهید که چگونه رويداد را براش hendler کنم در فرمم؟

hamid_hr
چهارشنبه 12 تیر 1392, 15:10 عصر
تو همون پروژه كه برا دانلود بود ببين
private void findToolStripMenuItem_Click(object sender, EventArgs e)
{
richtext = richTextBox1.Text;
FrmFind frm = new FrmFind(richtext);
frm.SearchEvent += new MethodInvoker(SearchClick);
frm.Show();

// richTextBox1.Select(6,2);
}

همون خط
frm.SearchEvent += new MethodInvoker(SearchClick);
اين كار رو ميكنه

Mahmoud.Afrad
چهارشنبه 12 تیر 1392, 16:31 عصر
داخل کلاست استثناء را پرتاب کن:

class MyClass
{
public void MyMethod()
{
try
{
// for example
int a = 1;
int b = 0;
int c = a / b;
}
catch (Exception)
{
throw;
}
}
}

حالا هر جا ازش استفاده میکنی باید استثناء رو دریافت کنی و هر کاری میخوای باهاش انجام بدی:

private void button2_Click(object sender, EventArgs e)
{
MyClass m = new MyClass();
try
{
m.MyMethod();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

چون MyMethod مستعد ایجاد استثناء هست از try...catch برای دریافت اون استفاده میکنیم.