PDA

View Full Version : error گیری سایت(مرحله نهایی)



mohsen_zelzela00
سه شنبه 03 فروردین 1389, 13:13 عصر
با سلام
من در مورد Error یابی سایت به مشکل برخوردم مشکلم رو در زیر به صورت مفصل توضیح می دهم.

من به ازای هر جدول در DataBase دو کلاس ایجاد می کنم و در یک کلاس با استفاده از Property برای تمام فیلدهای کلاس خودم یک property تعریف می کنم(به ازای هر کدام از فیلدها) و در کلاس دوم اعمالی که بر روی جدول انجام میشه رو در این کلاس براش کد می نویسم

حالا من در کلاس دوم خودم یک متد دارم به صورت زیر




Dim cn As New SqlConnection("Data Source=.;Initial Catalog=CLEARANCE;Integrated Security=True")
Dim cmd As New SqlCommand("DELETE_CLEARANCE_TYPES", cn)
cmd.CommandType = CommandType.StoredProcedure
Dim param As SqlParameter

param = cmd.Parameters.Add("@CLEARANCE_ID", SqlDbType.Int)
param.Value = Convert.ToInt32(Id)

Try
cn.Open()
cmd.ExecuteNonQuery()

Catch ex As Exception
Return

Finally


If (cn.State <> ConnectionState.Closed) Then cn.Close()
If (Not cmd Is Nothing) Then cmd.Dispose()




End Try



که در اینجا من از try و Catch استفاده می کنم .
ولی خب اگه در اینجا از Try استفاده کنم نمی تونم Error های برنامه رو کنترل کنم و پیغام مناسبی رو به کاربر نشون بدم

به نظر شما دوستان من چگونه Error های سایت رو کنترل کنم؟؟؟


ممنون

mehdi.mousavi
سه شنبه 03 فروردین 1389, 13:47 عصر
با سلام که در اینجا من از try و Catch استفاده می کنم .
ولی خب اگه در اینجا از Try استفاده کنم نمی تونم Error های برنامه رو کنترل کنم و پیغام مناسبی رو به کاربر نشون بدم به نظر شما دوستان من چگونه Error های سایت رو کنترل کنم؟؟؟ ممنون


سلام.
در مورد نحوه استفاده از try...catch...finally لطفا این پست (http://barnamenevis.org/forum/showpost.php?p=931720&postcount=22) رو بخونید. اما حالا برگردیم به سوال شما... شما برای اینکار چند تا انتخاب دارید. من، Exception Handling Application Block (http://msdn.microsoft.com/en-us/library/dd203116.aspx) رو پیشنهاد میکنم. در واقع این Application Block، امکان دخل و تصرف در Exception هایی که در برنامه رخ میده رو بهتون میده. شما می تونید یک Exception رو با Exception دیگری عوض کنید، Exception ای رو Log کنید، Wrap کنید و و و ... و مهمتر از همه، روند اینکار رو می تونید از طریق فایل web.config خودتون کنترل کنید.

برای اطلاعات بیشتر، به لینک فوق مراجعه کنید. شما ابتدا باید Microsoft Enterprise Library رو Download کنید (http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&displaylang=en)، سپس با استفاده از Documentation های همراهش و Quick Start ای که داره، ظرف چند ساعت با Application Block های مختلفی که داره آشنا بشید و از هر کدوم که مایل بودید (از جمله Exception Handling Block) استفاده کنید. مثال و ... هم همراه Download ها هست...

موفق باشید.

mohsen_zelzela00
سه شنبه 03 فروردین 1389, 13:59 عصر
سلام.
در مورد نحوه استفاده از try...catch...finally لطفا این پست (http://barnamenevis.org/forum/showpost.php?p=931720&postcount=22) رو بخونید. اما حالا برگردیم به سوال شما... شما برای اینکار چند تا انتخاب دارید. من، Exception Handling Application Block (http://msdn.microsoft.com/en-us/library/dd203116.aspx) رو پیشنهاد میکنم. در واقع این Application Block، امکان دخل و تصرف در Exception هایی که در برنامه رخ میده رو بهتون میده. شما می تونید یک Exception رو با Exception دیگری عوض کنید، Exception ای رو Log کنید، Wrap کنید و و و ... و مهمتر از همه، روند اینکار رو می تونید از طریق فایل web.config خودتون کنترل کنید.

برای اطلاعات بیشتر، به لینک فوق مراجعه کنید. شما ابتدا باید Microsoft Enterprise Library رو Download کنید (http://www.microsoft.com/downloads/details.aspx?FamilyId=1643758B-2986-47F7-B529-3E41584B6CE5&displaylang=en)، سپس با استفاده از Documentation های همراهش و Quick Start ای که داره، ظرف چند ساعت با Application Block های مختلفی که داره آشنا بشید و از هر کدوم که مایل بودید (از جمله Exception Handling Block) استفاده کنید. مثال و ... هم همراه Download ها هست...

موفق باشید.

استاد آیا در جای استفاده از try در کلاس درست هست یا هنگامی که یک متد رو در فرم خودمان فراخوانی می کنیم.؟؟؟؟؟؟؟

آخه من در برنامه خودم یک سری جدول های پایه دارم و یک سری جدول های اصلی که جدول های پایه یک سری FK در جدول های اصلی دارند و کاربر نباید بتونه رکوردهای که از اونها در جداول دیگر استفاده شده رو حذف کنه و ....

mehdi.mousavi
سه شنبه 03 فروردین 1389, 14:19 عصر
استاد آیا در جای استفاده از try در کلاس درست هست یا هنگامی که یک متد رو در فرم خودمان فراخوانی می کنیم.؟؟؟؟؟؟؟ آخه من در برنامه خودم یک سری جدول های پایه دارم و یک سری جدول های اصلی که جدول های پایه یک سری FK در جدول های اصلی دارند و کاربر نباید بتونه رکوردهای که از اونها در جداول دیگر استفاده شده رو حذف کنه و ....

سلام.
من واقعا ناراحت میشم وقتی کسی بدون خوندن پاسخی که میدم، ظرف 10-20 دقیقه، سوال دیگه ای مطرح میکنه، سوالی که نشون میده زحمتی که برای نوشتن پاسخ اولی کشیدم، بی فایده بوده. :ناراحت: شما اول یه خرده زمان بذارید، اون لینکهایی که دادم رو بخونید، اندکی در موردش فکر کنید، بعد مجددا بیایید و سوال رو مطرح کنید.

کلیه کارهای عرفی که روی Exception ها شما ممکنه بخواهید انجام بدید، توی Exception Handling Block دیده شده. فرضا، همینی که میگید یک رکورد تو جاهای دیگه Reference دارن و نباید پاک بشه... اینجا میشه از Replace Handler استفاده کرد و Exception تولید شده رو با Exception دیگه ای (از نوع دیگه ای منظورمه) تحت پیام "این رکورد در نقاط دیگر این سیستم استفاده شده، و قابل حذف نیست" عوض کرد. اینکه کد رو باید توی این کلاس بنویسید یا خیر، چیزی نیستش که من بتونم در موردش نظر بدم. شما Middle Layer دارید توی سیستم؟ معماری سیستمتون به چه صورتی هست؟

من وقتی کد شما رو میبینم، متوجه آشفتگی سیستم شما میشم. چون Connection String داخل برنامه Hard Code شده، و این به من داره میگه که سیستم شما فاقد "داربستی" هستش که بشه بقیه برنامه رو روش سوار کرد...

موفق باشید.

mohsen_zelzela00
سه شنبه 03 فروردین 1389, 14:38 عصر
سلام.


شما Middle Layer دارید توی سیستم؟ معماری سیستمتون به چه صورتی هست؟

من وقتی کد شما رو میبینم، متوجه آشفتگی سیستم شما میشم. چون Connection String داخل برنامه Hard Code شده، و این به من داره میگه که سیستم شما فاقد "داربستی" هستش که بشه بقیه برنامه رو روش سوار کرد...

موفق باشید.
استاد من از سیستم لایه ای استفاده نمی کنم فقط به ازای هر جدول دو کلاس تعریف می کنم.

استاد در مورد Connection String من اونو در Web.Config ست می کنم و این کدی که گذاشتم به عنوان نمونه بود برای همین این کد رو سریع نوشتم و اینجا گذاشتم

ممنون که به سوالات ما جواب می دید

alireza_s_84
سه شنبه 03 فروردین 1389, 14:39 عصر
من واقعا ناراحت میشم وقتی کسی بدون خوندن پاسخی که میدم، ظرف 10-20 دقیقه، سوال دیگه ای مطرح میکنه، سوالی که نشون میده زحمتی که برای نوشتن پاسخ اولی کشیدم، بی فایده بوده. :ناراحت: شما اول یه خرده زمان بذارید، اون لینکهایی که دادم رو بخونید، اندکی در موردش فکر کنید، بعد مجددا بیایید و سوال رو مطرح کنید.
:متعجب::متفکر::تشویق:

Hossein Bazyan
سه شنبه 03 فروردین 1389, 16:09 عصر
سلام
میتوانید یک متغییر به تابعی که برای اعمال کدنویسی نوشتی ایجاد کن و هنگام مراجعه به آن error را در بوسیله آن پاس بده و با استفاده از try همین متغییر رو نشون بده