Cvičení – splnění úkolu ve výzvě pro vytváření a vyvolávání výjimek

Dokončeno

Výzvy kódu v tomto modulu slouží k posílení toho, co jste se naučili, a pomáhají vám získat jistotu, než budete pokračovat dál.

Vytvoření a vyvolání výjimek – výzva

V tomto úkolu začnete s ukázkovou aplikací, která používá řadu volání metod ke zpracování dat. Příkazy nejvyšší úrovně vytvářejí pole uživatelských vstupních hodnot a volají metodu s názvem Workflow1. Workflow1 představuje pracovní postup vysoké úrovně, který prochází polem a předává vstupní hodnoty uživatele metodě s názvem Process1. Process1 používá vstupní data uživatele k výpočtu hodnoty.

V současné době, když Process1 dojde k problému nebo chybě, vrátí řetězec popisující problém místo vyvolání výjimky. Vaším úkolem je implementovat zpracování výjimek v ukázkové aplikaci.

K dokončení úkolu použijte následující kroky:

  1. Jako výchozí ukázkovou aplikaci použijte následující kód:

    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. Ověřte, že ukázková aplikace vytiskne do konzoly následující zprávy:

    '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. Aktualizujte ukázkovou aplikaci pomocí následujících požadavků:

    • Všechny metody musí být převedeny z static string metod na static void metody.
    • Metoda Process1 musí vyvolat výjimky pro každý typ problému, ke kterým došlo.
    • Metoda Workflow1 musí zachytit a zpracovat FormatException výjimky.
    • Příkazy nejvyšší úrovně musí zachytit a zpracovat DivideByZeroException výjimky.
    • Vlastnost Message výjimky musí být použita k oznámení uživateli o problému.
  4. Dokončené řešení musí v konzole vytisknout následující zprávy:

    '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.
    

Hodně zdaru!