PDA

View Full Version : گرفتن خطا



shahnam sha
چهارشنبه 03 شهریور 1389, 15:22 عصر
سلام دوستان
من يه مساله اي درگرفتن خطا دارم به اين صورت که در بار اول که کدم به خطا مي خورد به درستي به لیبل آن رفته و خطا ذخیره می شود ولی برای بار دو که به هماه خطا مي خورد توسط vb پيغام خطا نشان داده مي شود و به لیبل مقصد نمي رود کد به این صورت هست :


private function test() as string

on error goto ErrorHandel

code barname

EdamdeCode:

code barname

exit function
ErrorHandel:
Save Error to file Text : Resume EdamdeCode
end function


در ضمن اين تابع توسط یک کليد صدا زده شده است.

M.T.P
چهارشنبه 03 شهریور 1389, 15:38 عصر
به خاطر این هست که یک حلقه بی پایان به وجود آوردین و vb اجازه ادامه کار رو بعد از ذخیره خطا دیگه به شما نخواهد داد.

shahnam sha
چهارشنبه 03 شهریور 1389, 15:42 عصر
ممنونم از پاسختون ولي ميشه بگيد بايد چه کار بکنم.

M.T.P
چهارشنبه 03 شهریور 1389, 15:45 عصر
باید EdamdeCode رو از آخرین خط بردارین و کار تابع رو به پایان برسونید. اگه یک حلقه نامشخص دارید باید از While یا Do Until استفاده کنید.

shahnam sha
چهارشنبه 03 شهریور 1389, 15:50 عصر
باز هم متشکرم ولي فکر کنم من هم همين کار رو کردم روال برنامه من به اين صورت هست که یه while دارم که تو اون یه while دیگه نوشتم وقتي که به خطا مي خورم بعد از ثبت خطا اونو به انتهاي while دوم مي برم و برنامه از اوون جا شروع میشه در اصل بعد از لیبل EdamdeCode هم کد برنامه هست که اجرا بشه.

M.T.P
چهارشنبه 03 شهریور 1389, 16:00 عصر
از Resume Next به جای Goto استفاده کنید و در عین حال یه شرط if Err.Number <> 0 Then وسط While بزارین که حلقه کارش رو ادامه بده و در صورت بروز خطا اون رو گزارش کنید.


On Error Resume Next
While i < 50
'...
'..
'.
If Err.Number <> 0 Then SaveError:Err.Clear
Wend

shahnam sha
چهارشنبه 03 شهریور 1389, 16:10 عصر
متشکرم از جوابتون من این کار رو تست میکنم ببینم چی میشه
خیلی لطف کردید که اینقدر سریع جوابمو دادید.:لبخند::لبخندساده::لبخ ند: