PDA

View Full Version : مشکل به Try-Cach



sarasara
چهارشنبه 24 مرداد 1386, 11:29 صبح
من یه مشکل دارم.
من کد زیر رو نوشتم:

try
{
_arr = _dateStr.Split('/');
_year = Convert.ToInt32(_arr[0]);
_month = Convert.ToInt32(_arr[1]);
_day = Convert.ToInt32(_arr[2]);
PersianDate = new DateTime(_year, _month, _day, new PersianCalendar());
_year = Gregorian.GetYear(PersianDate);
_month = Gregorian.GetMonth(PersianDate);
_day = Gregorian.GetDayOfMonth(PersianDate);
_dt = new DateTime(_year, _month, _day);
_result = _dt.ToString();
}
catch (Exception ex)
{
throw new Exception("MySite Message:" + ex.Message);
}در کد بالا یک تاریخ شمسی وارد می شه و تبدیل می شه به تاریخ میلادی و برگردونده می شه، مشکل اینجاست که وقتی تاریخ به صورت غلط وارد می شه مثلا یه رشته که در فرمت تاریخ نیست یا رشته خالی که ارسال می شه خطای زیر رو می ده:
System.Exception: MySite Message:Input string was not in a correct format
این خطا رو روی throw new Exception("MySite Message:" + ex.Message); می ده.
چیکار باید بکنم.

marzban
چهارشنبه 24 مرداد 1386, 18:04 عصر
باسلام
خوب این مشکل از ورود مقادیر اشتباه از طرف شما هست.برای مثال فرض بگیرید جای سال و ماه تغییر کند برای مثال ماه 2007 خوب مطمعنا جواب صحیح نخواهید داشت.
چون مقادی خروجی شما وابسته به مقادیر ورودی شما هست ،پس در صحت مقادیر ورودی دقت کنید.
موفق باشید

someCoder
پنج شنبه 25 مرداد 1386, 22:34 عصر
من یه مشکل دارم.
من کد زیر رو نوشتم:

try
{
_arr = _dateStr.Split('/');
_year = Convert.ToInt32(_arr[0]);
_month = Convert.ToInt32(_arr[1]);
_day = Convert.ToInt32(_arr[2]);
PersianDate = new DateTime(_year, _month, _day, new PersianCalendar());
_year = Gregorian.GetYear(PersianDate);
_month = Gregorian.GetMonth(PersianDate);
_day = Gregorian.GetDayOfMonth(PersianDate);
_dt = new DateTime(_year, _month, _day);
_result = _dt.ToString();
}
catch (Exception ex)
{
throw new Exception("MySite Message:" + ex.Message);
}در کد بالا یک تاریخ شمسی وارد می شه و تبدیل می شه به تاریخ میلادی و برگردونده می شه، مشکل اینجاست که وقتی تاریخ به صورت غلط وارد می شه مثلا یه رشته که در فرمت تاریخ نیست یا رشته خالی که ارسال می شه خطای زیر رو می ده:
System.Exception: MySite Message:Input string was not in a correct format
این خطا رو روی throw new Exception("MySite Message:" + ex.Message); می ده.
چیکار باید بکنم.

شما عملا یه Exception رو تبدیل به exception دیگه کردید!


throw new Exception("MySite Message:" + ex.Message);
بجای این کد، کد مدیریت خطا رو بنویس.

hdv212
پنج شنبه 25 مرداد 1386, 23:10 عصر
میتونی برای ورود سال و ماه و روز، فیلدهای جداگانه در نظر بگیری و قبل از عملیات مورد نظرت، ورودی های کاربر رو چک کنی تا در محدوده ی مورد نظرت باشه، و ایجاد خطا نکنه.

PC2st
جمعه 26 مرداد 1386, 00:24 صبح
همون چیزی که جناب someCoder گفتند، یعنی اون خط رو عوض کنید، مثلا مثل زیر:


MessageBox.Show("MySite Message:" + ex.Message);