Oefening: een uitdagende activiteit voltooien voor het maken en gooien van uitzonderingen

Voltooid

Code-uitdagingen in deze module worden gebruikt om te versterken wat u hebt geleerd en u te helpen vertrouwen te krijgen voordat u verdergaat.

Uitdaging uitzonderingen maken en genereren

In deze uitdaging begint u met een voorbeeldtoepassing die gebruikmaakt van een reeks methode-aanroepen om gegevens te verwerken. Met de instructies op het hoogste niveau maakt u een matrix met invoerwaarden van gebruikers en roept u een methode aan met de naam Workflow1. Workflow1 vertegenwoordigt een werkstroom op hoog niveau die door de matrix loopt en gebruikersinvoerwaarden doorgeeft aan een methode met de naam Process1. Process1 gebruikt de invoergegevens van de gebruiker om een waarde te berekenen.

Process1 Wanneer er een probleem of fout optreedt, wordt er momenteel een tekenreeks geretourneerd die het probleem beschrijft in plaats van een uitzondering te genereren. Uw uitdaging is het implementeren van uitzonderingsafhandeling in de voorbeeldtoepassing.

Voer de volgende stappen uit om de uitdaging te voltooien:

  1. Gebruik de volgende code als voorbeeldtoepassing:

    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. Controleer of de voorbeeldtoepassing de volgende berichten naar de console afdrukt:

    '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. Werk de voorbeeldtoepassing bij met behulp van de volgende vereisten:

    • Alle methoden moeten worden geconverteerd van static string methoden naar static void methoden.
    • De Process1 methode moet uitzonderingen genereren voor elk type probleem dat is opgetreden.
    • De Workflow1 methode moet de FormatException uitzonderingen ondervangen en afhandelen.
    • De instructies op het hoogste niveau moeten de DivideByZeroException uitzonderingen opvangen en afhandelen.
    • De Message eigenschap van de uitzondering moet worden gebruikt om de gebruiker op de hoogte te stellen van het probleem.
  4. De voltooide oplossing moet de volgende berichten afdrukken naar de console:

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

Succes!