תרגיל - השלם פעילות אתגר ליצירה ולתיעה של חריגות
אתגרי קוד במודול זה משמשים לחיזוק הפעולות שלמדת ולעזור לך להשיג ביטחון לפני שתמשיך.
אתגר יצירה והתנהלות של חריגים
באתגר זה, אתה מתחיל ביישום לדוגמה המשתמש בסידרה של קריאות שיטה לעיבוד נתונים. המשפטים ברמה העליונה יוצרים מערך של ערכי קלט של משתמשים ומשתמשים לשיטה בשם 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.
בהצלחה!