خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


دستور Try...Catch...Finally در ویژوال بیسیک دات نت

دستور Try...Catch...Finally در ویژوال بیسیک دات نت
نویسنده : امیر انصاری
دستور Try...Catch...Finally راهی را فراهم می کند تا تمامی خطاهایی که ممکن است در یک بلوک از کد اتفاق بیفتند را مدیریت کنید، و در ضمن اجرای برنامه هم متوقف نشود.

نرم افزار سامانه مودیان راهکار



نحوه نگارش (Syntax) دستور Try...Catch...Finally


دستور Try...Catch...Finally در ویژوال بیسیک دات نت

تشریح قسمتهای مختلف دستور Try...Catch...Finally


  • tryStatements : دستورات شما در این قسمت نوشته می شوند، اگر خطایی در این دستورات اتفاق بیفتد قابل مدیریت خواهند بود.
  • Catch : نوشتن چندین دستور Catch مجاز می باشد. اگر در حین اجرای دستوراتی که داخل بدنه Try قرار دارند خطایی اتفاق بیفتد، اجرای کد به Catch متناسب با آن می رود.
  • exception : نوع شیء مدیریت خطا می باشد. در صورتی که خطایی واقع شود این شیء بصورت اتوماتیک با خطای مربوطه مقدار دهی می شود و اطلاعات خطا را در خود خواهد داشت.
  • type : اگر نوع exception در اینجا مشخص شود، دقیقا برنامه سراغ آن نوع خطای خاص می رود.
  • When : با استفاده از When می توانید بر روی نوع exception شرط بگذارید و برای هر نوع خطای خاص عملکرد متفاوتی را داشته باشید.
  • catchStatements : در صورتی که خطایی اتفاق بیفتد کنترل اجرای برنامه به این قسمت می آید و می توانید کدهای لازم برای برخورد با خطای مربوطه را در این قسمت بنویسید.
  • Exit Try : این دستور برای خروج از بلوک Try می باشد.
  • Finally : این قسمت چه در صورت وقوع خطا و چه در صورت عدم وقوع خطا اجرا می شود. اگر می خواهید کدی در هر حالت اجرا شود از این قسمت استفاده نمایید و کد مربوطه را در این بلوک بنویسید.
  • finallyStatements : دستوراتی که در بلوک Finally نوشته می شوند.
  • End Try : پایان دستور Try...Catch...Finally می باشد.

توضیحات دستور Try...Catch...Finally


اگر در قسمتی از کدهایتان انتظار وقوع خطایی را دارید، از دستور Try...Catch...Finally استفاده کنید، تا در هنگام بروز خطا ضمن اینکه برنامه بصورت ناگهانی متوقف نمی شود، قادر باشید تا کدهای لازم برای مدیریت خطا و داشتن عکس العمل مناسب با خطاهای مورد پیش بینی را بنویسید.

دستور Try…Catch عبارت است از یک بلوک Try که می تواند با یک یا چند بلوک Catch همراه شود، بلوک های Catch متفاوت می تواند برای برخورد با انواع خطاها مورد استفاده قرار بگیرند. وقتی در هنگام اجرای برنامه خطایی در بلوک Try اتفاق بیفتد ویژوال بیسیک دنبال Catch متناسب با آن خطا می گردد و اگر نتواند Catch مناسبی را انتخاب کند، اجرای برنامه متوقف خواهد شد. و پیغام یک خطای مدیریت نشده را به کاربر نشان می دهد.

دستور Try...Catch می تواند بصورت تو در تو نیز نوشته شود، هنگامیکه دستور Try...Catch را بصورت تو در تو می نویسید، هر بار که خطایی اتفاق بیفتد ویژوال بیسیک به سراغ قسمت Catch درونی ترین دستور Try...Catch می رود.

متغیرهای محلی که درون یک بلوک Try معرفی می کنید، خارج از محدوده آن Try شناسایی نخواهند شد، پس اگر قصد دارید تا متغیری را در خارج از محدوده Try مثلا در قسمت Finally نیز داشته باشید، باید آن را خارج از محدود Try و قبل از آن معرفی کنید.

بلوک Finally در دستور Try...Catch...Finally


اگر یک یا چند دستور دارید که قبل از خروج از دستور Try...Catch حتما باید اجرا شوند، آن را در قسمت Finally بنویسید.

قسمت Finally چه در صورت وقوع خطا و چه در صورت عدم وقع خطا اجرا خواهد شد. پس اگر کدی دارید که در هر دو حالت وقوع یا عدم وقوع خطا باید اجرا شود از بلوک Finally استفاده نمایید.

اگر در یک دستور Try قسمت Catch موجود نباشد آنوقت وجود قسمت Finally الزامی می شود. اما در حالت معمول که Catch را دارید، قسمت Finally اختیاری می باشد.

ملاحظاتی که در هنگام استفاده از دستور Try…Catch باید لحاظ کنید


از دستور Try…Catch فقط در جاهایی استفاده کنید که ممکن است خطاهای غیر معمول و یا پیش بینی نشده اتفاق بیفتند. برخی از دلایلی که باعث می شوند تا پیشنهاد کنیم از دستور Try…Catch در هر جا استفاده نکنید :

  • به دام انداختن خطاها در زمان اجرا، ایجاد سربار اضافی در برنامه می کنند و معمولا از وضعیتی که با کدهای محافظه کارانه از وقوع خطا پیش گیری می کنید کندتر هستند.
  • اگر قسمت Catch را برنامه نویسی نکنید، ممکن است کاربر متوجه خطای واقعی نگردد و دچار ابهام و اشتباه شود.
  • استفاده از دستورات Try…Catch کد نویسی و همینطور خواندن یک برنامه را پیچیده تر می کند.

به مثال زیر توجه کنید :

در این مثال قبل از اینکه فایلی را بخوانیم ابتدا بررسی کرده ایم که فایل مربوطه موجود باشد. این کار ما نیاز به بررسی خطای عدم وجود فایل، با استفاده از دستور Try…Catch را از بین می برد.

دستور Try...Catch...Finally در ویژوال بیسیک دات نت
متن زیر قابل کپی کردن می باشد.

Private Sub TextFileExample(ByVal filePath As String)

' Verify that the file exists.
If System.IO.File.Exists(filePath) = False Then
Console.Write("File Not Found: " & filePath)
Else
' Open the text file and display its contents.
Dim sr As System.IO.StreamReader =
System.IO.File.OpenText(filePath)

Console.Write(sr.ReadToEnd)

sr.Close()
End If
End Sub

مثال از نحوه استفاده دستور Try...Catch...Finally


دستور Try...Catch...Finally در ویژوال بیسیک دات نت
متن زیر قابل کپی کردن می باشد.

Public Sub TryExample()
' Declare variables.
Dim x As Integer = 5
Dim y As Integer = 0

' Set up structured error handling.
Try
' Cause a "Divide by Zero" exception.
x = x \ y

' This statement does not execute because program
' control passes to the Catch block when the
' exception occurs.
MessageBox.Show("end of Try block")
Catch ex As Exception
' Show the exception's message.
MessageBox.Show(ex.Message)

' Show the stack trace, which is a list of methods
' that are currently executing.
MessageBox.Show("Stack Trace: " & vbCrLf & ex.StackTrace)
Finally
' This line executes whether or not the exception occurs.
MessageBox.Show("in Finally block")
End Try
End Sub


نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز