Cvičení – splnění úkolu ve výzvě pro vytváření a vyvolávání výjimek
Výzvy kódu v tomto modulu slouží k posílení toho, co jste se naučili, a pomáhají vám získat jistotu, než budete pokračovat dál.
Vytvoření a vyvolání výjimek – výzva
V tomto úkolu začnete s ukázkovou aplikací, která používá řadu volání metod ke zpracování dat. Příkazy nejvyšší úrovně vytvářejí pole uživatelských vstupních hodnot a volají metodu s názvem Workflow1.
Workflow1 představuje pracovní postup vysoké úrovně, který prochází polem a předává vstupní hodnoty uživatele metodě s názvem Process1.
Process1 používá vstupní data uživatele k výpočtu hodnoty.
V současné době, když Process1 dojde k problému nebo chybě, vrátí řetězec popisující problém místo vyvolání výjimky. Vaším úkolem je implementovat zpracování výjimek v ukázkové aplikaci.
K dokončení úkolu použijte následující kroky:
Jako výchozí ukázkovou aplikaci použijte následující kód:
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; }Ověřte, že ukázková aplikace vytiskne do konzoly následující zprávy:
'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.Aktualizujte ukázkovou aplikaci pomocí následujících požadavků:
- Všechny metody musí být převedeny z
static stringmetod nastatic voidmetody. - Metoda
Process1musí vyvolat výjimky pro každý typ problému, ke kterým došlo. - Metoda
Workflow1musí zachytit a zpracovatFormatExceptionvýjimky. - Příkazy nejvyšší úrovně musí zachytit a zpracovat
DivideByZeroExceptionvýjimky. - Vlastnost
Messagevýjimky musí být použita k oznámení uživateli o problému.
- Všechny metody musí být převedeny z
Dokončené řešení musí v konzole vytisknout následující zprávy:
'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.
Hodně zdaru!