PDA

View Full Version : چگونگي دريافت exception از متدي با خروجي DataTable



ali_shmki
جمعه 01 مرداد 1389, 17:15 عصر
سلام
يك متد دارم كه كار اتصال به بانك اطلاعاتي و استخراج اطلاعات رو انجام ميده. خروجي اون هم از نوع DataTable هست.
اما من قصد دارم در اين متد از Try Catch استفاده كنم كه فكر ميكنم لازم هم هست.
مشكلي كه هست اينه كه در صورتي كه استثنا رخ دهد و من بخواهم Message اون استثنا رو از متد خارج كنم، چون خروجي متد DataTable هست، مسلما نميتونم. لطفا راهنمايي كنيد.

يه نمونه از متد رو جهت روشنتر شدن موضوع:

public DataTable getData()
{
try
{
//connect to db
//return dt

}
catch (Exception ex)
{
//return ex.Message
}

}

ricky22
جمعه 01 مرداد 1389, 17:52 عصر
Return null;
بعد داخل برنامه

If (getData!=null)
اینطوری میشه مدیریت کرد و با خطای
Object ..
مواجه نمیشی

ali_shmki
جمعه 01 مرداد 1389, 18:12 عصر
انگار سوال منو خوب متوجه نشدي دوست من.
عرض كردم در صورت وجود Exception، ميخوام پيغام خطا رو از متد خارج كنم. نه اينكه null بفرستم.

Mostafa_Dindar
جمعه 01 مرداد 1389, 23:56 عصر
سلام
يك متد دارم كه كار اتصال به بانك اطلاعاتي و استخراج اطلاعات رو انجام ميده. خروجي اون هم از نوع DataTable هست.
اما من قصد دارم در اين متد از Try Catch استفاده كنم كه فكر ميكنم لازم هم هست.
مشكلي كه هست اينه كه در صورتي كه استثنا رخ دهد و من بخواهم Message اون استثنا رو از متد خارج كنم، چون خروجي متد DataTable هست، مسلما نميتونم. لطفا راهنمايي كنيد.

يه نمونه از متد رو جهت روشنتر شدن موضوع:

public DataTable getData()
{
try
{
//connect to db
//return dt

}
catch (Exception ex)
{
//return ex.Message
}

}


انگار سوال منو خوب متوجه نشدي دوست من.
عرض كردم در صورت وجود Exception، ميخوام پيغام خطا رو از متد خارج كنم. نه اينكه null بفرستم.

لازم نیست متن خطا رو برگردونید , در متدی که اون رو فراخوانی کرده یا والد(های) اون متد میتونید به متن خطا دسترسی داشته باشید .

Exception ها وقتی Throw بشن , به صورت حباب بالا میان , تا جایی که فراخوانی شدن ( معمولا UI یا همان صفحات aspx ) حال اگر اونجا هم هندل نشده باشند , به رویداد Application_Error میرسند و شما میتونید اونجا اون رو هندل کنید و اگر اونجا هم هندل نکرده باشید , در صورتی که Debug Mode روی True باشد , در صفحه زرد رنگ خطا مشاهده میشود . در صورتی کهcustomErrors رو در وب کانفیگ ست کرده باشید به صفحه defaultRedirect ای که شما مشخص کردید هدایت میشه و خبری از مشخصات خطا نیست .

در این بین از زمانی که Exception در سیستم Throw میشه تا رویدادApplication_Error اگر Exception هندل نشده باشد , در هر مرحله شما میتونید خاصیت Message از Property شیی Exception رو داشته باشید و از اون استفاده کنید ( در اینجا فرض کنید در UI میخوام متن خطا در یک لیبل برای مدیر نشون بدم ) :
try
{
//...
}
catch (Exception ex)
{
lblError.Text = ex.Message;
}

موفق باشید