PANAMA
شنبه 31 اردیبهشت 1390, 20:58 عصر
سلام دوستان.
این اولین پست من هست.
من در برخی مواقع نیاز دارم که برنامه به خطی که خطا رخ داده برگرده و یا اینکه برنامه بعد از خطی که استثنا پرتاب شده ادامه یابد.
هنوز نتونستم که راهکاری اصولی برای اینکار پیدا کنم.
در مورد برگشت به خطی که خطا ایجاد شده، از یک حلقه استفاده می کنم.
به عنوان نمونه من در قطعه کد زیر، فضای دردسترس یک درایو رو بدست میارم. و در صورت بروز هر گونه خطا، اجرای دستورات به همان نقطه بر میگردد.
البته این فقط یک مثال هست.
DriveInfo d = new DriveInfo("DriveName");
for (; ; )
{
try
{
MessageBox.Show(d.AvailableFreeSpace.ToString());
}
catch
{
if (MessageBox.Show("Drive is not ready\nTry agian?",
"Error", MessageBoxButtons.YesNo) == DialogResult.Yes)
continue;
}
break;
}
در این روش برنامه بدون هیچ مشکلی، کار میکنه. ولی اگر تعداد خط هایی که امکان ایجاد استثنا در آنها وجود داره، بیشتر از یک بشه، این روش کارایی خودشو از دست میده.
آیا در سی شارپ برای این مسئله راهکاری درنظر گرفته شده است؟
ممنون میشم راهنمایی بفرمایید.
این اولین پست من هست.
من در برخی مواقع نیاز دارم که برنامه به خطی که خطا رخ داده برگرده و یا اینکه برنامه بعد از خطی که استثنا پرتاب شده ادامه یابد.
هنوز نتونستم که راهکاری اصولی برای اینکار پیدا کنم.
در مورد برگشت به خطی که خطا ایجاد شده، از یک حلقه استفاده می کنم.
به عنوان نمونه من در قطعه کد زیر، فضای دردسترس یک درایو رو بدست میارم. و در صورت بروز هر گونه خطا، اجرای دستورات به همان نقطه بر میگردد.
البته این فقط یک مثال هست.
DriveInfo d = new DriveInfo("DriveName");
for (; ; )
{
try
{
MessageBox.Show(d.AvailableFreeSpace.ToString());
}
catch
{
if (MessageBox.Show("Drive is not ready\nTry agian?",
"Error", MessageBoxButtons.YesNo) == DialogResult.Yes)
continue;
}
break;
}
در این روش برنامه بدون هیچ مشکلی، کار میکنه. ولی اگر تعداد خط هایی که امکان ایجاد استثنا در آنها وجود داره، بیشتر از یک بشه، این روش کارایی خودشو از دست میده.
آیا در سی شارپ برای این مسئله راهکاری درنظر گرفته شده است؟
ممنون میشم راهنمایی بفرمایید.