練習 - 完成建立及擲回例外狀況的挑戰活動
本課程模組中的程式代碼挑戰可用來強化您學到的內容,並協助您在繼續之前獲得一些信心。
建立和擲回例外狀況挑戰
在此挑戰中,您會從使用一系列方法來處理數據的範例應用程式開始。 最上層語句會建立使用者輸入值的陣列,並呼叫名為 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.
祝你好運!