Exercice - Effectuer une activité de défi pour créer et lever des exceptions

Terminé

Les défis de code de ce module sont utilisés pour renforcer ce que vous avez appris et vous aider à gagner en confiance avant de continuer.

Créer et lever des exceptions

Dans ce défi, vous commencez par un exemple d’application qui utilise une série d’appels de méthode pour traiter les données. Les instructions de niveau supérieur créent un tableau de valeurs d’entrée utilisateur et appellent une méthode nommée Workflow1. Workflow1 représente un flux de travail de haut niveau qui effectue une boucle dans le tableau et transmet les valeurs d’entrée utilisateur à une méthode nommée Process1. Process1 utilise les données d’entrée utilisateur pour calculer une valeur.

Actuellement, lorsque Process1 rencontre un problème ou une erreur, il retourne une chaîne décrivant le problème plutôt que de lever une exception. Votre défi consiste à implémenter la gestion des exceptions dans l’exemple d’application.

Pour effectuer le défi, procédez comme suit :

  1. Utilisez le code suivant comme exemple d’application de démarrage :

    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. Vérifiez que l’exemple d’application imprime les messages suivants dans la console :

    '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. Mettez à jour l’exemple d’application à l’aide des exigences suivantes :

    • Toutes les méthodes doivent être converties de static string méthodes en static void méthodes.
    • La Process1 méthode doit lever des exceptions pour chaque type de problème rencontré.
    • La Workflow1 méthode doit intercepter et gérer les FormatException exceptions.
    • Les instructions de niveau supérieur doivent intercepter et gérer les DivideByZeroException exceptions.
    • La Message propriété de l’exception doit être utilisée pour avertir l’utilisateur du problème.
  4. Votre solution terminée doit imprimer les messages suivants dans la 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.
    

Bonne chance!