كيفية التقاط استثناءات في 2005 Visual Basic أو Visual Basic.NET

للحصول على إصدار Microsoft Visual C# 2005 و Microsoft Visual C#.NET من هذه المقالة، راجع 308345 .


للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع 191474 .

ملخص

التقاط ومعالجة الاستثناءات مهمة برمجة قياسية. توضح هذه المقالة كيفية استخدام كتلة حاول الالتقاط-أخيرا لالتقاط استثناء. كتلة حاول الالتقاط-وأخيراً هو "مجمع" التي وضعها حول أي التعليمات البرمجية حيث توجد إمكانية الاستثناء.

كتلة حاول الالتقاط-وأخيراً يتكون من الأجزاء التالية:
  • يتم وضع أي التعليمات البرمجية التي قد تطرح استثناء داخل كتلة try .
  • إذا تم طرح استثناء، يتم إدخال كتلة catch ويمكن البرنامج من إجراء العملية المناسبة استرداد أو تنبيه المستخدم.
  • دائماً يتم تنفيذ التعليمات البرمجية في كتلة finally وتنفيذ تنظيف بعد حدث استثناء. كتلة finally اختيارية.

متطلبات

توضح القائمة التالية الأجهزة الموصى بها برامج البنية الأساسية للشبكة وحزم الخدمات التي تحتاجها:
  • Microsoft Windows Server 2003 أو Windows 2000 Server أو نظام التشغيل Microsoft Windows 2000 Professional، Windows 2000 متقدم خادم أو خادم Microsoft Windows NT 4.0
  • Microsoft Visual Basic 2005 أو Microsoft Visual Basic.NET

مثال خطوة بخطوة

  1. إنشاء "تطبيق" وحدة تحكم جديد في Visual Basic 2005 أو في Visual Basic.NET.
  2. في إجراء Sub Main، إدراج نموذج التعليمات البرمجية التالي. النموذج يقوم بتعريف وتهيئه ثلاثة متغيرات، حيث تسبب خطأ في تهيئة "k".
    ' This code generates an exception.Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line.

  3. اضغط المفتاح F5 لعرض الاستثناء.
  4. التفاف عبارة try-catch حول التعليمات البرمجية الخاصة بك لالتقاط الخطأ. التعليمات البرمجية التالية التقاط كافة الأخطاء التي يتم طرحها في التعليمات البرمجية ويعرض رسالة خطأ عامة. استبدال التعليمات البرمجية في إجراء Sub Main بالتعليمة البرمجية التالية.
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.
    Catch
    Console.WriteLine("An error occurred.")
    End Try
  5. اضغط CTRL + F5 لتشغيل المشروع. لاحظ أنه يتم عرض رسالة الخطأ من كتلة catch .
  6. إذا كان بعض تنظيف أو تجهيز يجب أن تتم بغض النظر عن خطأ، استخدم جزء أخيرا البيان حاول-الصيد-وأخيراً . يتم دائماً تنفيذ التعليمات البرمجية في الجزء أخيرا من البيان، بغض النظر عن استثناء. تعرض التعليمات البرمجية التالية "هذا البيان يتم دوماً طباعة" في وحدة التحكم، حتى إذا لم يحدث خطأ. استبدال رمز Sub Main بالتعليمة البرمجية التالية.
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch
    Console.WriteLine("An error occurred.")
    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

  7. اضغط CTRL + F5 لتشغيل المشروع.
  8. يمكنك استخدام كائن الاستثناء بعبارة catch لاسترداد تفاصيل الاستثناء. باستثناء عدد من الخصائص التي يمكن أن تساعدك على تحديد التعليمات أو مصدر معلومات مكدس حتى حول استثناء. يمكن هذه المعلومات مفيدة جداً لتعقب سبب الاستثناء الأصلي أو تقديم شرح أفضل من مصدرها. النموذج التالي يلتقط استثناء ويعطي رسالة خطأ محددة. كما قبل، يمكنك استبدال التعليمات البرمجية في إجراء Sub Main بالتعليمة البرمجية التالية.

    مثال 1
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch e As Exception ' Perform code that deals with the exception
    ' or informs the user what occurred.
    Console.WriteLine("The following error occurred:")
    Console.WriteLine(e.ToString()) ' Print the error message to the user.

    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

    مثال 2
    ' This code shows how to catch an exception.Try
    Console.WriteLine("We're going to divide 10 by 0 and see what happens...")
    Console.WriteLine()

    Dim i as Integer = 10
    Dim j as Integer = 0
    Dim k As Integer = i/j ' Error on this line. Control jumps to the catch block.

    Catch e As Exception ' Perform code that deals with the exception
    ' or informs the user what occurred.
    Console.WriteLine("The following error occurred:")
    Console.WriteLine( e.Message ) ' Print the error message.
    Console.WriteLine( e.Source ) ' Name of application or object
    ' that caused the error
    Console.WriteLine( e.StackTrace ) ' String that contains the stack
    ' trace for this exception
    Finally ' This section is performed regardless of the above processing.
    Console.WriteLine()
    Console.WriteLine("This statement is always printed")
    End Try

  9. حتى هذه النقطة، قد تناول الحالة الخاصة بإنشاء استثناء غير محدد. ومع ذلك، إذا كنت تعرف مسبقاً نوع الاستثناء سوف تحدث، يمكنك التقاط الاستثناء المتوقعة ومعالجتها وفقا لذلك. يمكنك بعد ذلك استخدام عدة كتل Catch لالتقاط الاستثناءات الأخرى والتعامل معها، وكذلك. النموذج التالي يوضح ذلك.
    Module Module1Sub Main()

    ' Attempt to do some file processing.
    ' This can cause a number of potential exceptions.
    ' Note that you can use the specific exceptions to get extra information about that exception,
    ' but this example focuses on showing control execution for those exceptions.

    Try
    File.Create("c:/temp/test.txt") ' Can fail for a number of reasons

    Catch ioe As System.IO.IOException ' This error may occur if the Temp folder does not exist.
    Console.WriteLine("An IO error occurred. The c:\temp folder does not exist")

    Catch se As System.Security.SecurityException ' You do not have the appropriate permission
    ' to take this action.
    Console.WriteLine("You don't have the security permissions to take this action!")

    Catch e As Exception ' Catch all other exceptions.
    Console.WriteLine( e.ToString() ) ' Print the standard exception information.
    End Try
    End Sub
    End Module
    لأن قد تختلف تكوينات الكمبيوتر، النموذج في هذه الخطوة قد أو قد لا يقوم بطرح استثناء. إذا كنت تريد فرض استثناء الإدخال/إخراج، تغيير مسار الملف إلى مجلد غير موجود على جهاز الكمبيوتر الخاص بك.

المراجع

لمزيد من المعلومات، راجع Microsoft.NET Framework عدة تطوير البرامج (SDK).
خصائص

رقم الموضوع: 301283 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات