Exercițiul - Finalizați o activitate de provocare pentru crearea și generarea de excepții

Finalizat

Provocările de cod din acest modul sunt utilizate pentru a consolida ceea ce ați învățat și a vă ajuta să obțineți o încredere înainte de a continua.

Provocarea creați și generați excepții

În această provocare, începeți cu o aplicație eșantion care utilizează o serie de apeluri de metodă pentru procesarea datelor. Instrucțiunile de nivel superior creează o matrice de valori de intrare ale utilizatorilor și apelează o metodă denumită Workflow1. Workflow1 reprezintă un flux de lucru de nivel înalt care parcurge matricea și transmite valorile de intrare ale utilizatorului într-o metodă numită Process1. Process1 utilizează datele de intrare ale utilizatorului pentru a calcula o valoare.

În prezent, atunci când Process1 întâmpină o problemă sau o eroare, returnează un șir care descrie problema, în loc să genereze o excepție. Provocarea dvs. este să implementați gestionarea excepțiilor în aplicația eșantion.

Urmați pașii următori pentru a finaliza provocarea:

  1. Utilizați următorul cod ca aplicație eșantion de pornire:

    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. Verificați dacă aplicația eșantion imprimă următoarele mesaje pe consolă:

    '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. Actualizați aplicația eșantion utilizând următoarele cerințe:

    • Toate metodele trebuie convertite din static string metode în static void metode.
    • Metoda Process1 trebuie să genereze excepții pentru fiecare tip de problemă întâlnit.
    • Metoda Workflow1 trebuie să capteze și să gestioneze excepțiile FormatException .
    • Instrucțiunile de nivel superior trebuie să capteze și să gestioneze excepțiile DivideByZeroException .
    • Proprietatea Message excepției trebuie utilizată pentru a notifica utilizatorul cu privire la problemă.
  4. Soluția finalizată trebuie să imprime următoarele mesaje pe consolă:

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

Noroc!