PDA

View Full Version : آموزش: یافتن محل دقیق وقوع خطا (شماره خط کد!)



butterfly8528
شنبه 15 مهر 1391, 02:05 صبح
سلام دوستان .
حتما تا حالا به این فکر کردید که چطور میشه متوجه بشید که دقیقا در کدام خط از کد های برنامتون خطا رخ میده و در صورت نیاز یک گزارش خطای دقیق ایجاد کنید .

برای انجام این کار :

1- ابتدا خط های کد رو شماره گذاری می کنیم.

2- روال رو (با استفاده از دستور On Error...) مدیریت خطا می کنیم.

3- با استفاده از تابع Erl (که یکی از توابع مستند نشده VB هست) شماره خطی که خطا در آنجا رخ داده رو به دست می آوریم .

مثال :

Private Sub Form_Load()

On Error GoTo ErrH


Dim a As Integer, b As Integer

1 a = 10

2 b = 15

3 a = b / 0

4 MsgBox CStr(a)

Exit Sub


ErrH:
MsgBox "Error Number : " & Err.Number & vbCrLf & _
"Error Location : Form1.Form_Load " & vbCrLf & _
"Error Line : " & Erl & vbCrLf & _
"Error Description : " & Err.Description, vbCritical
' Resume Next
End Sub


امیدوارم مفید واقع بشه .

موفق و آزاد باشید :لبخندساده: .

SlowCode
شنبه 15 مهر 1391, 14:48 عصر
خطای division by zero میده!!! چرا عمل نمیکنه؟

محسن واژدی
شنبه 15 مهر 1391, 15:08 عصر
خطای division by zero میده!!! چرا عمل نمیکنه؟

سلام علیکم
بایستی در ابتدای روال دستگیره خطا تعریف کرده باشید تا در صورت بروز خطا هندل به دستگیره تعریف شده پرش کنه

موفق باشید

SlowCode
شنبه 15 مهر 1391, 15:21 عصر
خوب ایشون تعریف کردن دیگه!!!

On Error GoTo ErrH
من عینا همین کد رو کپی کردم ولی دستگیرش کار نمیکنه!:لبخند:
واسه شما کار کرد؟ فکر کنم مشکل از وی بی منه.

محسن واژدی
شنبه 15 مهر 1391, 15:34 عصر
احتمالا کلا دستگیره خطا در وی بی غیرفعال هست، در Tools\Options>General در گروه "Error Trapping" باید یکی از گزینه های "Break in Ckass Module" یا "Break on Unhandled Errors" انتخاب شده باشن

SlowCode
شنبه 15 مهر 1391, 15:50 عصر
درسته، مال من روی Break on All Errors بود.