Øvelse – fuldfør en udfordringsaktivitet for at oprette og aktivere undtagelser
Kodeudfordringer i dette modul bruges til at styrke det, du har lært, og hjælpe dig med at få lidt selvtillid, før du fortsætter.
Opret og kast en undtagelsesudfordring
I denne udfordring starter du med et eksempelprogram, der bruger en række metodekald til at behandle data. Sætninger på øverste niveau opretter en matrix af brugerinputværdier og kalder en metode med navnet Workflow1.
Workflow1 repræsenterer en arbejdsproces på højt niveau, der går gennem matrixen og overfører brugerinputværdier til en metode med navnet Process1.
Process1 bruger brugerinputdataene til at beregne en værdi.
Process1 Når der i øjeblikket opstår et problem eller en fejl, returneres der en streng, der beskriver problemet, i stedet for at udløse en undtagelse. Din udfordring er at implementere håndtering af undtagelser i eksempelprogrammet.
Brug følgende trin til at fuldføre udfordringen:
Brug følgende kode som starteksempelprogram:
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; }Kontrollér, at eksempelprogrammet udskriver følgende meddelelser i konsollen:
'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.Opdater eksempelprogrammet ved hjælp af følgende krav:
- Alle metoder skal konverteres fra
static stringmetoder tilstatic voidmetoder. - Metoden
Process1skal smide undtagelser for hver type problem, der opstår. - Metoden
Workflow1skal fange og håndtere undtagelserneFormatException. - Sætningerne på øverste niveau skal fange og håndtere undtagelserne
DivideByZeroException. - Egenskaben
Messagefor undtagelsen skal bruges til at give brugeren besked om problemet.
- Alle metoder skal konverteres fra
Den fuldførte løsning skal udskrive følgende meddelelser i konsollen:
'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.
Held og lykke!