PDA

View Full Version : سوال: جلوگیری از بروز خطاهای Inet



aliman12
جمعه 19 خرداد 1391, 00:12 صبح
سلام عزیزان
چند پرسش دارم

1- چگونه میتوان پیغام خطای رکوئست تایم اوت آی نت را تشخیص داد؟ (هنگامیکه به وقوع پیوست بتوان آنرا تشخیص داد و با استفاده از یک مسیج باکس این هشدار را به کاربر نشان داد)
2-چگونه آی نت در حال کار را بطور کامل متوقف کنید؟
3-چگونه میتوان تشخیص داد که آی نت در انجام عملیات آپلود فایل در هاست موفق بوده و به درستی عمل کرده یا خیر؟
4- چگونه میتوان تشخیص داد که آی نت با موفقیت ریموت هاست کرده است یا خیر؟ (سرور هاست به آی نت ما جواب قبولی داده است یا خیر یا به عبارت دیگر هاست پابرجاست و آپ تایم است؟)
5- چگونه میتوان پیغام خطای "Unable to the connect remotehost" را تشخیص داد و آنرا به شکل مسیج باکس به کاربر اعلام کرد؟ (بطوریکه یک خطای برنامه نویسی نباشد و باعث بسته شدن برنامه نشود و کاربر بداند که برنامه نتوانسته است به هاست متصل شود)

قبلا از پاسخ های مفیدتان تشکر می جویم

arenaw
جمعه 19 خرداد 1391, 00:59 صبح
سلام
راستش تاحالا با این موضوعاتی که گفتی سرو کار نداشتم ولی اگه قبل کد ها بنویسی:
On Error GoTo Err
وی این هم پایین کدها بنویسی:
Exit Sub
Err:
MsgBox Err.Description, vbCritical, Err.Number

میاد به جای اینکه خطا بگیره و برنامه رو ببنده یا pause کنه، اون قسمت رو اجرا نمیکنه و ارورش رو توی مسیج باکس نشون میده

just4froum
جمعه 19 خرداد 1391, 05:57 صبح
سوال 1 و 5 :
باید از روش جناب arenaw استفاده کنید.

ببین هر اررور یک شماره داره شما میتونید با یه select case برای هر اررور کد خاص خود را اجرا کنید.

سوال 2 :
اگه منظورت وقتی هست که از متد openurl استفاده می کنی باید بگم نمیشه چنین کاری رو کرد .

سوال 3 و 4 :
مطمئن نیستم ولی فکر کنم اگر به درستی انجام نده اررور میده.

aliman12
جمعه 19 خرداد 1391, 11:42 صبح
اگه منظورت وقتی هست که از متد openurl استفاده می کنی باید بگم نمیشه چنین کاری رو کرد .
هم در اون حالت هم وقتی که داره فایل آپلود میکنه
آیا با این دستور بسته نمیشه ؟

with inet1
.cancel
.Execute , "CLOSE"
end with


سوال 3 و 4 :
مطمئن نیستم ولی فکر کنم اگر به درستی انجام نده اررور میده.
ممکنه یک پرونده رو نصفه و ناقص آپلود کنه؟
یا اگر آپلود کنه کامل انجام میده اگرم نصفه باشه اصلا آپلود نمیکنه؟


اگه قبل کد ها بنویسی:
On Error GoTo Err
وی این هم پایین کدها بنویسی:
Exit Sub
Err:
MsgBox Err.Description, vbCritical, Err.Number
tnx
میشه یه توضیحی در مورد آرگومان ها بدید
err چیه؟
کد مربوط به کار آی نت رو باید بالای exit sub بنویسم؟
ولی نکته مهم اینه که این کدها زمانی کارآمده که بتونیم آی نت رو بطور کامل از کار بندازیم در غیر این صورت اگر ما جلوی ارورشم بگیریم بازم اون داره کارخودشو انجام میده و چه بسا که ممکنه باز یک نامتعادل بازی دیگه ای از خودش در بیاره

aliman12
جمعه 19 خرداد 1391, 14:49 عصر
دوستان همگی لطف کنند در این بحث شرکت کنند!
این بحث بحث جدیدیه و میتونه برای همه مفید باشه !
پس مرحمت بفرمایید اگر چیز میزی در این رابطه میدونید انتشار دهید
پیروز باشید و رستگار

just4froum
جمعه 19 خرداد 1391, 18:56 عصر
1- دستور Goto :

شما در هر جای برنامه می توانید از این دستور استفاده کنید بدین صورت که مانند متغیر اسمی را در نظر گرفته (فرض می کنیم Here)و می نویسیم Goto Here سپس در قسمتی که می خواهیم Here را معرفی کنیم می نویسیم

Here:
به دو نقطه توجه کنید.

خوب حالا با این کار وقتی برنامه به Goto Here برسه به خط بعدی نمیره و به خطی که Here نوشته شده میرود . مانند :

Private Sub Command1_Click()
GoTo Here
MsgBox "HELLO" 'in dastoor ejra nemishavad
Here:
MsgBox "Bye" 'in dastoor ejra mishavad
End Sub

just4froum
جمعه 19 خرداد 1391, 19:08 عصر
2 - دستورات برای error :

الف ) On error resume next : با این دستور اگر برنامه ای به ارروری برسد آن اررور رو نادیده میگیرد و به ادامه برنامه می پردازد. مانند :

Private Sub Command1_Click()
On Error Resume Next
Dim x As Long
x = 12
x = "Salam" ' Mojebe Error mishavad
x = x + 5
MsgBox x
End Sub

همانطور که میبینید نوع x از long است و خطی که می خواهیم یک رشته را در x بریزیم موجب خطا است ولی برنامه آن خط را رها کرده و به ادامه برنامه می پردازد.

ب ) On Error goto : با این دستور همانند دستور Goto اگر برنامه با خطایی روبه رو شود به خطی خاصی می رود. مانند :

Private Sub Command1_Click()
On Error GoTo Here
Dim x As Long
x = 12
x = "Salam" ' Mojebe Error mishavad
x = x + 5

Exit Sub

Here:
MsgBox x
End Sub


همانطور که میبینید در کد اول msgbox مقدار 17 را بر می گرداند ولی در کد دوم msgbox مقدار 12 را برمی گرداند زیرا در قسمت اول اررور نادیده گرفته شده و بر نامه ادامه پیدا کرده که به خط x = x + 5 رسیده و شده 17 ولی در کد دوم به دلیل این که از goto استفاده شده برنامه به قسمت Here منتقل شده و با 5 جمع نشده.

نکته کلیدی : حواستان باشد که در کد دوم استفاده از exit sub قبل از Here اجباری است زیرا اگر از exit sub استفاده نشود کد مربوط به اررور در هر صورت اجرا می گردد.

aliman12
جمعه 19 خرداد 1391, 22:22 عصر
مرسی از کلاس آموزشیتون معلم جان
معلمی شغل انبیاست :لبخند:
اینارو که بلد بودم
فقط میخواستم ببینم err چیه که متوجه شدم
بیشتر دنبال اینم که چطور میشه آی نت رو از کار انداخت
چون اگر آی نت در حال کار باشه و برنامه رو ببندیم میبینیم که پروسسش در تسک منیجر باقی میمونه !

just4froum
شنبه 20 خرداد 1391, 02:59 صبح
اینارو که بلد بودم
فقط میخواستم ببینم err چیه که متوجه شدم


عجب !!! حالا بیا خوبی کن و کامل بگو.



بیشتر دنبال اینم که چطور میشه آی نت رو از کار انداخت
چون اگر آی نت در حال کار باشه و برنامه رو ببندیم میبینیم که پروسسش در تسک منیجر باقی میمونه !

عزیزم من اینو چند ماه پیش مطرح کردم اگر جست و جو می کردی پیدا می کردی.
نتیجه نمیشه چنین کاری رو کرد.

می تونی برنامه رو end کنی یا taskkill یا ...

تاپیک متوقف کردن Inet (http://barnamenevis.org/showthread.php?328886-%D9%85%D8%AA%D9%88%D9%82%D9%81-%DA%A9%D8%B1%D8%AF%D9%86-Inet)