تمرين - إكمال نشاط تحدي لإنشاء الاستثناءات وطرحها

مكتمل

تستخدم تحديات التعليمات البرمجية في هذه الوحدة لتعزيز ما تعلمته ومساعدتك على اكتساب بعض الثقة قبل المتابعة.

إنشاء تحدي الاستثناءات وطرحها

في هذا التحدي، تبدأ بنموذج تطبيق يستخدم سلسلة من استدعاءات الأسلوب لمعالجة البيانات. تنشئ عبارات المستوى الأعلى صفيفا من قيم إدخال المستخدم وتستدعي أسلوبا يسمى Workflow1. Workflow1 يمثل سير عمل عالي المستوى يتكرر عبر الصفيف ويمرر قيم إدخال المستخدم إلى أسلوب يسمى Process1. Process1 يستخدم بيانات إدخال المستخدم لحساب قيمة.

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

استخدم الخطوات التالية لإكمال التحدي:

  1. استخدم التعليمات البرمجية التالية كتطبيق نموذج البدء الخاص بك:

    string[][] userEnteredValues = new string[][]
    {
                new string[] { "1", "2", "3"},
                new string[] { "1", "two", "3"},
                new string[] { "0", "1", "2"}
    };
    
    string overallStatusMessage = "";
    
    overallStatusMessage = Workflow1(userEnteredValues);
    
    if (overallStatusMessage == "operating procedure complete")
    {
        Console.WriteLine("'Workflow1' completed successfully.");
    }
    else
    {
        Console.WriteLine("An error occurred during 'Workflow1'.");
        Console.WriteLine(overallStatusMessage);
    }
    
    static string Workflow1(string[][] userEnteredValues)
    {
        string operationStatusMessage = "good";
        string processStatusMessage = "";
    
        foreach (string[] userEntries in userEnteredValues)
        {
            processStatusMessage = Process1(userEntries);
    
            if (processStatusMessage == "process complete")
            {
                Console.WriteLine("'Process1' completed successfully.");
                Console.WriteLine();
            }
            else
            {
                Console.WriteLine("'Process1' encountered an issue, process aborted.");
                Console.WriteLine(processStatusMessage);
                Console.WriteLine();
                operationStatusMessage = processStatusMessage;
            }
        }
    
        if (operationStatusMessage == "good")
        {
            operationStatusMessage = "operating procedure complete";
        }
    
        return operationStatusMessage;
    }
    
    static string Process1(String[] userEntries)
    {
        string processStatus = "clean";
        string returnMessage = "";
        int valueEntered;
    
        foreach (string userValue in userEntries)
        {
            bool integerFormat = int.TryParse(userValue, out valueEntered);
    
            if (integerFormat == true)
            {
                if (valueEntered != 0)
                {
                    checked
                    {
                        int calculatedValue = 4 / valueEntered;
                    }
                }
                else
                {
                    returnMessage = "Invalid data. User input values must be non-zero values.";
                    processStatus = "error";
                }
            }
            else
            {
                returnMessage = "Invalid data. User input values must be valid integers.";
                processStatus = "error";
            }
        }
    
        if (processStatus == "clean")
        {
            returnMessage = "process complete";
        }
    
        return returnMessage;
    }
    
  2. تحقق من أن نموذج التطبيق يطبع الرسائل التالية إلى وحدة التحكم:

    'Process1' completed successfully.
    
    'Process1' encountered an issue, process aborted.
    Invalid data. User input values must be valid integers.
    
    'Process1' encountered an issue, process aborted.
    Invalid data. User input values must be non-zero values.
    
    An error occurred during 'Workflow1'.
    Invalid data. User input values must be non-zero values.
    
  3. تحديث نموذج التطبيق باستخدام المتطلبات التالية:

    • يجب تحويل كافة الأساليب من static string أساليب إلى static void أساليب.
    • Process1 يجب أن يطرح الأسلوب استثناءات لكل نوع من المشاكل التي تمت مواجهتها.
    • يجب أن يلتقط Workflow1 الأسلوب الاستثناءات ويعالجها FormatException .
    • يجب أن تلتقط عبارات المستوى الأعلى الاستثناءات وتعالجها DivideByZeroException .
    • Message يجب استخدام خاصية الاستثناء لإعلام المستخدم بالقضية.
  4. يجب أن يطبع الحل المكتمل الرسائل التالية إلى وحدة التحكم:

    'Process1' completed successfully.
    
    'Process1' encountered an issue, process aborted.
    Invalid data. User input values must be valid integers.
    
    An error occurred during 'Workflow1'.
    Invalid data. User input values must be non-zero values.
    

حظ سعيد!