Übung: Ausführen einer Aufgabe zum Erstellen und Auslösen von Ausnahmen
Code-Challenges in diesem Modul werden verwendet, um das Gelernte zu festigen und Ihnen zu helfen, Selbstvertrauen zu gewinnen, bevor Sie fortfahren.
Aufgabe: Erstellen und Auslösen von Ausnahmen
In dieser Herausforderung beginnen Sie mit einer Beispielanwendung, die eine Reihe von Methodenaufrufen zum Verarbeiten von Daten verwendet. Die Anweisungen der obersten Ebene erstellen ein Array von Benutzereingabewerten und rufen eine Methode mit dem Namen Workflow1auf.
Workflow1 stellt einen allgemeinen Workflow dar, der das Array durchläuft und Benutzereingabewerte an eine Methode mit dem Namen Process1übergibt.
Process1 verwendet die Benutzereingabedaten, um einen Wert zu berechnen.
Wenn bei Process1 ein Problem oder ein Fehler auftritt, wird derzeit eine Zeichenfolge mit einer Beschreibung des Problems zurückgegeben, statt dass eine Ausnahme ausgelöst wird. Ihre Herausforderung besteht darin, die Ausnahmebehandlung in der Beispielanwendung zu implementieren.
Führen Sie die folgenden Schritte aus, um die Herausforderung auszuführen:
Verwenden Sie den folgenden Code als Startbeispielanwendung:
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; }Vergewissern Sie sich, dass die Beispielanwendung die folgenden Meldungen in der Konsole ausgibt:
'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.Aktualisieren Sie die Beispielanwendung mithilfe der folgenden Anforderungen:
- Alle Methoden müssen von
static stringMethoden instatic voidMethoden konvertiert werden. - Die
Process1Methode muss Ausnahmen für jeden aufgetretenen Problemtyp auslösen. - Die
Workflow1Methode muss dieFormatExceptionAusnahmen abfangen und behandeln. - Die Anweisungen auf oberster Ebene müssen die
DivideByZeroExceptionAusnahmen abfangen und behandeln. - Die
MessageEigenschaft der Ausnahme muss verwendet werden, um den Benutzer über das Problem zu benachrichtigen.
- Alle Methoden müssen von
Die fertige Lösung muss die folgenden Meldungen in der Konsole drucken:
'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.
Viel Glück!