练习 - 完成创建和引发异常的挑战活动
本模块中的代码挑战用于强化你学到的知识,并在继续作之前帮助你获得一些信心。
创建和引发异常挑战
在此挑战中,首先需要一个示例应用程序,该应用程序使用一系列方法调用来处理数据。 顶级语句创建用户输入值的数组,并调用名为 Workflow1 的方法。
Workflow1 表示循环访问数组并将用户输入值传递给名为 Process1的方法的高级工作流。
Process1 使用用户输入数据计算值。
目前,遇到问题或错误时 Process1 ,它会返回描述问题的字符串,而不是引发异常。 你的挑战是在示例应用程序中实现异常处理。
使用以下步骤完成挑战:
使用以下代码作为起始示例应用程序:
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; }验证示例应用程序是否将以下消息输出到控制台:
'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.使用以下要求更新示例应用程序:
- 所有方法都必须从
static string方法转换为static void方法。 - 该方法
Process1必须针对遇到的每种类型的问题引发异常。 - 该方法
Workflow1必须捕获和处理FormatException异常。 - 顶级语句必须捕获并处理
DivideByZeroException异常。 -
Message异常的属性必须用于通知用户问题。
- 所有方法都必须从
已完成的解决方案必须将以下消息打印到控制台:
'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.
祝你好运!