استثناءات ومعالجة ‏‏ استثناء (البرمجة C# إرشادات)

معالجة التعليمات الميزات التي تتعامل مع أية حالات غير متوقعة أو الاستثنائية التي تحدث عند برنامج الاستثناء لغة C# هو قيد التشغيل. يستخدم معالجة ‏‏ استثناء try، catch، و finallyالكلمات الأساسية للإجراءات التي قد لا تنجح المحاولة، لمعالجة حالات فشل عندما تقرر أنه هو معقولة للقيام بذلك، وتنظيف موارد فيما بعد. يمكن إنشاء استثناءات بوقت تشغيل اللغة العامة (CLR).NET Framework أو المكتبات بأية جهة خارجية، أو بواسطة تعليمات برمجية للتطبيق. الاستثناءات التي تم إنشاؤها باستخدام throwكلمة أساسية.

في كثير من الحالات، باستثناء قد تم طرح ليس بأسلوب الذي يسمى تعليمات برمجية مباشرة، ولكن بأسلوب آخر مفصل لأسفل في المكالمة مكدس. عند حدوث ذلك، سوف unwind CLR مكدس، يبدو لأسلوب مع catchحظر لنوع معين استثناء، وسيقوم بتنفيذ أول مثل catchأنه عند حظر إيجاد. إذا وجد لا المناسبة catchحظر في أي مكان في المكدس المكالمة، سيتم ينهي العملية وعرض رسالة إلى المستخدم.

في هذا مثال، أسلوب باختبار للأقسام صفر و catches الخطأ. بدون معالجة ‏‏ استثناء، وهذا برنامج قد ينهي مع DivideByZeroException كان غير معالج خطأ .

class ExceptionTest
{
    static double SafeDivision(double x, double y)
    {
        if (y == 0)
            throw new System.DivideByZeroException();
        return x / y;
    }
    static void Main()
    {
        // Input for test purposes. Change values
        // to see exception handling behavior.
        double a = 98, b = 0;
        double result = 0;

        try
        {
            result = SafeDivision(a, b);
            Console.WriteLine("{0} divided by {1} = {2}", a, b, result);
        }
        catch (DivideByZeroException e)
        {
            Console.WriteLine("Attempted divide by zero.");
        }
    }
}

استثناءات نظرة عامة

استثناءات أن الخصائص التالية:

  • استثناءات هي أنواع الجميع النهاية ينحدر من System.Exception.

  • استخدم tryحظر حول العبارات التي قد طرح استثناء.

  • بمجرد حدوث استثناء في tryحظر تدفق الانتقال السريع لعنصر التحكم إلى أول معالج ‏‏ استثناء المقترنة الموجودة في أي مكان في استدعاء المكدس. في C#, catchالكلمة الأساسية هو المستخدمة لتعريف على معالج ‏‏ استثناء.

  • إذا كان يوجد معالج ‏‏ استثناء استثناء محدد هو الحالية، يتوقف برنامج تنفيذها مع رسالة إعلام بالخطأ.

  • قم بالتقاط لا إستثناء إلا إذا كان يمكن معالجته وترك تطبيق في الولاية معروفة. إذا قمت بالتقاط System.Exception، إعادة الطرح باستخدام throwكلمة أساسية في النهاية catchحظر.

  • إذا كان catchحظر بتعريف متغير استثناء، يمكنك استخدام إلى الحصول على مزيد من المعلومات حول نوع ‏‏ استثناء الذي حدث.

  • استثناءات يمكن بوضوح إنشاؤها باستخدام برنامج باستخدام throwالكلمة الأساسية.

  • استثناء الكائنات تحتوي على معلومات مُفصل حول الخطأ، مثل كـ الولاية المكدس المكالمة ووصفاً نصياً للخطأ.

  • تعليمات برمجية في finallyحظر هو تنفيذه حتى إذا كان الاستثناءات هو طرح. استخدام finallyحظر إلى حرر موارد، على سبيل المثال إلى إغلاق دفق أو الملفات التي تم فتحها في أي tryحظر.

  • يتم تطبيق ‏‏ استثناءات المدارة في.NET Framework على الأعلى من Win32 بناء إليه معالجة ‏‏ استثناء. ل المزيد من المعلومات، راجع Structured Exception Handling (C++)و Begin Course أ الأعطال الدورة تشغيل "عمق من Win32 المركبة استثناء معالجة".

الأقسام ذات الصلة

راجع المواضيع التالية للحصول على مزيد من المعلومات حول استثناءات و hوling ‏‏ استثناء:

مواصفات لغة #C

لمزيد من المعلومات، راجع مواصفات لغة #C. مواصفات اللغة هي المصدر النهائي لبناء جملة C# واستخدامها.

راجع أيضًا:

المرجع

الكلمات الأساسية لـ #C

الإلقاء ( مرجع C# )

try-catch (مرجع #C)

try-finally (مرجع #C)

try-catch-finally (مرجع #C)

المبادئ

دليل البرمجة لـ #C

موارد أخرى

إرشادات التصميم الخاصة استثناءات

معالجة ثم طرح استثناءات

معالجة ثم طرح استثناءات

كتابة تعليمات برمجية.NET اعتمادية

Minidumps لاستثناءات معينة