خیلی ممنون
استثناء یا Exception : در vb.net به خطاهایی که در زمان اجرای برنامه (run time) رخ میدهند, استثناء گفته میشود.
برای مقابله و مدیریت استثناها در vb.net دو روش کلی وجود دارد :
روش ساخت نیافته که در vb6 روش پیش فرض است و روش ساخت یافته که در نسخه .net عرضه شده است.
روش ساخت نیافه Unstructureed error : در این روش برای مقابله با خطا از دستور On Error GoTo استفاده میکنیم :
On Error {GoTo [line | 0 | -1 ] | Resume Next}GoTo Line : کد مقابله با خطاء را که از خط line شروع میشود, فراخوانی میکند.
GoTo 0 : عملیات کنترل خطاء را در همان روال متوقف میکند, در واقع راهی برای خاموش کردن روشهای مقابله با خطاء است.
GoTo-1 : مشابه با بالا
Resume Next : وقتی خطایی اتفاق می افتد, اجرای برنامه را از دستور بعد از دستوری که موجب خطاء شده از سر می گیرد.
مثال :
در vb شی محصوص خطاء (Err) وجود دارد که برای برای مقابله بهتر با خطاها طراحی شده است.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
3 خاصیت مهم سئ فوق عبارتند از :
Err.Number : که شماره خاص یک خطاء است (هر نوع خطایی دارای یک شماره منحصر به فرد است).
Err.Description : توضیح مختصری در مورد خطای اتفاق افتاده میدهد.
Err.Source : مقدار رشته ای برگشت میدهد که شئ با برنامه ایجاد کننده خطاء را مشخص میکند.(البته در برنامه های ما نام پروژه است اما برای کامپوننتهای Com خارجی میتواند مفید باشد).
شئ Err دارای متدی بنام Getexception است که با استفاده از آن میتوان یک شئ استثناء گرفت که نشان میدهد چه اتفاقی اقتاده است.
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
دستور Resume :
با این دستور میتوان اجرای برنامه را بعد از وقوع خطاء از سر گرفت :
Resum : اجرای برنامه را از همان دستور که باعث خطاء شده از سر میگیرد.
Resum Next : اجرای برنامه را از دستور بعد از دستوری, که موجب خظاء شده از سر میگیرد.
Resum Line : برای از سر گیری برنامه به خطی که با برچسب line مشخص شده میرود.
On Error GoTo handler*** : در صورتیکه در ابتدای یک روال دستور On Error Resume Next را قرار بدهیم برنامه بدون توجه به خطاء از دستور بعد اجرا میشود
Handler:
Resume Next
anvar.net عزيز دست گلت در نكنه واقعاً عاليه خيلي خوب پيش ميره انشاء ا... خدا كمكت كنه
ميشه در مورد goto 0 و goto -1 بيشتر توضيح بدين ؟
مطالب خیلی جالبین... anvar.net هر وقت این فصل تموم شد (با اجازه شما) بگو مطالب رو پی دی اف کنم (البته با ذکر اسم شریف)
ا...ز زیاد
ممنون از دوستان,آقای/؟ Shahrdar ؛ اجازه ما هم دست شماست, اختیار تام دارید.فعلا چند روزی صبر کن, مقدمات تمام میشه
On Error GoTo |0|-1ارگومان صفر (0), در واقع تا زمانیکه On Error بعدی اجرا شود, رسیدگی به خطاء را در رویه مورد نظر به حالت تعلیق درمی آورد.
آرگومان 1 , رسیدگی به خطاء را در رویه مورد نظر به حالت تعلیق درمی آورد. به عبارتی خطاء را Nothing میکند.
اگر بخواهیم کد مقابله با خطاء را در یک روال غیر فعال کنیم میتوانیم از On Error GoTo 0 استفاده کنیم. استفاده از این دستور تمام اداره کننده های خطاء در روال جاری را غیر فعال میکند, توجه کنید که در صورتیکه خطایی رخ بدهد این عبارت از CLR نمی خواهد به یک خط با شماره خط 0 انتقال یابد (حتی در صورتیکه روال دارای یک خط با شماره صفر باشد ), استفاده از این کد این نتیجه را دربردارد که هیچ گونه کنترلی بر روی خطاهایی که رخ میدهند ندارید.
**** : غیر فعال سازی کد مفابله با خطاء با استفاده از دستور فوق نه تنها در روال فوق عمل میکند بلکه بطور کامل مقابله با خطاء به روش ساختاری را غیر فعال می سازد. یعنی قبل از اینکه خطاهای ایجاد شده بوسیله اداره کننده و نه CLR در برنامه بکار گرفته شوند باید اداره کننده های خطاء را فعال سازید.
اگر بخواهیم خطاهای ایجاد شده در یک روال را غیر فعال سازیم (یعنی خطاها را نادیده بگیریم) از عبارت On Error GoTo -1 استفاده میکنیم. این عبارت از CLR می خواهد خطاهای روال جاری و هر گونه روالی که CLR فراخوانی میکند و اداره کننده خطاء ندارند را نادیده بگیرد. در واقع CLR اقدام به پاکسازی خطاء میکند, در صورتیکه از این دستور استفاده کنیم اداره کننده خطاء فقط برای روال جاری معتبر است, زیرا پس از اتمام روال, اداره نمودن خطاء به وضعیت معمول خود بازمی گردد.
سلام بر جماعت شیفتگان VB (آخرین ورژن!)
ما هم دوباره برگشتیم و فعلاً دوباره برای فضولی در خدمت هستیم!!!!!
با اجازه دوست عزیزم کاربر anvar.net، میگویم بروبچ این On Error را زیاد تحویل نگیرند، بلد باشید چگونه کار میکند و از آن باید چطور استفاده کرد ولی زیاد استفاده نکنید!!! کمی دندان برروی جگر شفیقتان بگذارید تا دوستمان دستور جدید Try Catch را توضیح دهند، آنوقت تا دلتان خواست مدام Try Catch تایپ کنید.!
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)