Ejercicio: Realización de una actividad de desafío para crear y producir excepciones

Completado

Los desafíos de código de este módulo se usan para reforzar lo que ha aprendido y ayudarle a obtener cierta confianza antes de continuar.

Desafío de creación e inicio de excepciones

En este desafío, empezará con una aplicación de ejemplo que usa una serie de llamadas de método para procesar datos. Las instrucciones de nivel superior crean una matriz de valores de entrada de usuario y llaman a un método denominado Workflow1. Workflow1 representa un flujo de trabajo de alto nivel que recorre en bucle la matriz y pasa los valores de entrada del usuario a un método denominado Process1. Process1 usa los datos de entrada del usuario para calcular un valor.

Actualmente, cuando Process1 se produce un problema o un error, devuelve una cadena que describe el problema en lugar de producir una excepción. El desafío es implementar el control de excepciones en la aplicación de ejemplo.

Siga estos pasos para completar el desafío:

  1. Use el código siguiente como aplicación de ejemplo de inicio:

    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. Compruebe que la aplicación de ejemplo imprime los siguientes mensajes en la consola:

    '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. Actualice la aplicación de ejemplo con los siguientes requisitos:

    • Todos los métodos se deben convertir de métodos static string a métodos static void.
    • El Process1 método debe producir excepciones para cada tipo de problema detectado.
    • El Workflow1 método debe detectar y controlar las FormatException excepciones.
    • Las instrucciones de nivel superior deben detectar y controlar las DivideByZeroException excepciones.
    • La Message propiedad de la excepción debe usarse para notificar al usuario del problema.
  4. La solución completada debe imprimir los siguientes mensajes en la consola:

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

¡Buena suerte!