PDA

View Full Version : کنترل ارورهای ایجاد شده در ساختار Try



naser_feb8646
یک شنبه 27 آذر 1390, 13:02 عصر
سلام دوستان
آیا امکان این وجود داره من بتونم خطایی که در ساختار Try ایجاد میشه رو کنترل کنم ساده تر بگم
من میخوام یه مقداری رو در دیتابیس ذخیره کنم برای این کار از ساختار Try استفاده میکنم حالا میخوام اگر در هنگام insert مشکلی پیش اومد متن خطا رو بطور فارسی چاپ کنم

برای مثال

Try
con.Open()
com.CommandText = cmd
cmd = "insert into tb_Group (Group_name) values (N'" & txt_namegroup.Text & "')"
com.CommandText = cmd
com.ExecuteNonQuery()
con.Close()
lbl_error.Text = "اطلاعات با موفقیت ثبت شد"
Catch ex As Exception
lbl_error.Text = (ex.Message)
End Try

الان توی این کد اگر خطایی رخ بده مقدار اون بصورت انگلیسی در lbl_error چاپ میشه حالا من میخوام اگر فلان خطا رخ داد بطور فارسی چاپ بشه

yasser_beiraghi
یک شنبه 27 آذر 1390, 14:05 عصر
مي تونيد توي قسمت Catch اين کار رو انجام بديد

Try
'insert Statement

Catch ex As Exception


If ex.Message.IndexOf("قسمتي ازارور لاتين که هميشه ثابت هستش") > -1 Then
lbl_error.Text = "خطا در ثبت اطلاعات"
End if
End Try

naser_feb8646
یک شنبه 27 آذر 1390, 17:50 عصر
ممنون دوست من
ولی این یه پیغام کلی میده من میخوام وقتی مثلا یه رکورد بخاطر اینکه مقدار غیر مجاز توش ثبت بشه ارور میده من به کاربر اطلاع بدم که مقدار شما غیر مجاز هست

A.S.Roma
یک شنبه 27 آذر 1390, 18:03 عصر
Try Catch سربار زیادی روی سرور (CLR) داره و بهتره تاجایی که امکان داره ازش اجتناب بشه.
شما می تونید برای این کار قبل از اجرای دستورات SQL ، یک Validation جامع روی داده ها داشته باشید.

rahmatr
دوشنبه 28 آذر 1390, 17:41 عصر
برای هر try (http://msdn.microsoft.com/en-us/library/0yd65esw.aspx) با توجه به نوع exception (http://blogs.msdn.com/b/brada/archive/2005/03/27/402801.aspx) می توان چند قسمت catch داشت.

به عنوان مثال:
try
{
...
}
catch (SqlException exception)
{
lbl_error.Text = GetSqlDescription(exception);
}
catch (Exception exception)
{
lbl_error.Text = exception.Message;
}


string GetSqlDescription(SqlException exception)
{
switch (exception.Number)
{
case 2601:
case 2627:
return "سیستم اجازه ذخیره اطلاعات تکراری را نمی دهد";
case 547:
return "به علت وجود زیر مجموعه امکان حذف نمیباشد";
case 2:
return "خطا در اتصال به سرور";
default:
return exception.Message;
}
}