ايران ويج

نسخه‌ی کامل: اجرا نشدن دستورات هندل کردن خطا در محیط IDE وی بی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
چرا اجرای دستورات هندل کردن خطاها مثل
کد:
On Error Resume Next
تو محیط خود vb6 گیر و نگیر داره و حتماً باید کد رو کامپایل کرد ، بعد فایل exe رو اجرا کرد تا این دستورها اجرا بشن ؟؟Confused
(۰۳-اسفند-۱۳۹۱, ۲۳:۵۷:۳۰)flush نوشته است: [ -> ]چرا اجرای دستورات هندل کردن خطاها مثل
کد:
On Error Resume Next
تو محیط خود vb6 گیر و نگیر داره و حتماً باید کد رو کامپایل کرد ، بعد فایل exe رو اجرا کرد تا این دستورها اجرا بشن ؟؟Confused

چون خطا زمان اجرا اتفاق میافته!

واسه مطالعه بیشتر یه کتابهای کامپایلر مراجعه کنید
(۰۴-اسفند-۱۳۹۱, ۰۰:۱۲:۴۶)babyy نوشته است: [ -> ]چون خطا زمان اجرا اتفاق میافته!

واسه مطالعه بیشتر یه کتابهای کامپایلر مراجعه کنید

فکر کنم سوالم رو بد مطرح کردم ؛ خطا که چه تو حالت دیباگ چه تو حالت کامپایل شده اتفاق میافته (اگر خطایی باشه) ولی اینکه اون خطا با اجرای دستور On Error Resume Next تو حالت دیباگ ، در نظر گرفته (ب)شه ، گیر و نگیر داره بعضی وقت ها این دستور اجرا میشه ، بعضی وقت ها اجرا نمیشه ؟

اگه بخوام سوالم رو دیگه خیلی اساسی با در نظر گرفتن صحبت شما (اگه برداشتم درست باشه که منظور شما اینه دستورات هندل کردن خطا تو حالت دیباگ اجرا نمیشن چون تو حالت خطاگیری هستیم !) بگم ، این میشه که تنظیمی برای در نظر گرفتن این دستور(ات) تو حالت دیباگ کردن هستش ؟
یعنی شما میخوایی اول برنامت بنویسی On Error Resume Next
و با این علم که میدونی امکان داره بعضی جاها از روی خطا پرش کنه
دنبال روشی هستی که پرش نکنه و خطا رو نشون بده! آره؟

Biggrin
برعکس من با علم اینکه بخشی از کدم خطا میده (مثلاً یه آرایه دارم و از دستور ubound استفاده کردم و به ناچار دستور در بخشی قرار گرفته که در اولین بار اجرا مقدار این ارایه nothing هستش ، پس خطا میده) حالا میخوام زمانی که دارم این کد رو تو محیط وی بی 6 مینویسم و باگ گیری میکنم این دیباگر وی بی 6 هی نیاد تو سر من و کد بزنه و بگه این چیه نوشتی :-)
دوست عزيز

استفاده از دستور On Error Resume Next فلاش تانك نيست كه بزاري بالا سر كد هر خطايي داشت رو ببره !!

شما كه مي دوني همچين خطايي رخ مي ده خوب با يه دستور شرطي جلوش رو بگير

مثلا اگر مي دوني هميشه دفعه اول مشكل داره خوب يه شمارنده بزار تو تابعت و چكش كن :

IF I=1 then Exit Function

يا اگر مي دوني خطا فقط مربوط به همون آرايه است ،‌شرطي بزار كه Nothing‌بودن آرايه رو چك كنه :

If Array(1) is Nothing then Exit Function

درآخر باز محض احتياط واجب علما فتوا دادن يه دستور كنترل خطا هم بالا سر رويه بزاريد كه احيانا اگر خطا داد رشته كلام از

دستتتون خارج نشه اما باز هم Resume Next مكروهه بهتره از Goto ErrorHandler استفاده كنيد و متناسب با كد خطاي رخ داده

به كاربر پيغام بديد يا اينكه اجراي برنامه رو جاي ديگه اي منتقل كنيد

در ضمن بهتره بدونيد دستورات كنترل خطا در همه موارد عمل نمي كنن و بعضي اوقات مخصوصا در خصوص موارد Nothing

آرايه ها و عناصر ديتابيس همونجا پيغام خطا مي دن و بعد ممكنه ردش كنن كه بايد به هر طريقي از رخ دادن چنين خطاهايي

اجتناب كنيد
سلام.
on error resume next همیشه عمل میکنه و مشکلی با محیط دیباگ نداره.
شاید شما دستور رو تو یه تابع استفاده کردید و خطا در تابع دیگری رخ داده.

به صحبت های جناب دیدی هم توجه کن. روش کارت اصولی نیست که یه on error بندازیو خودتو راحت کنی.
شاید آرایه یه مثال بود. ولی اگه واقعا همون مشکل آرایه رو داری با کمی کد نویسی میتونی هندلش کنی.