연습 - 예외를 만들고 throw하기 위한 챌린지 작업 완료
이 모듈의 코드 챌린지는 학습한 내용을 강화하고 계속하기 전에 자신감을 얻는 데 사용됩니다.
예외 생성 및 던지기 챌린지
이 과제에서는 일련의 메서드 호출을 사용하여 데이터를 처리하는 샘플 애플리케이션으로 시작합니다. 최상위 문은 사용자 입력 값의 배열을 만들고 명명 Workflow1된 메서드를 호출합니다.
Workflow1 는 배열을 반복하고 사용자 입력 값을 명명 Process1된 메서드에 전달하는 개략적인 워크플로를 나타냅니다.
Process1 는 사용자 입력 데이터를 사용하여 값을 계산합니다.
현재 Process1 문제 또는 오류가 발생하면 예외를 throw하는 대신 문제를 설명하는 문자열을 반환합니다. 문제는 샘플 애플리케이션에서 예외 처리를 구현하는 것입니다.
다음 단계를 사용하여 챌린지를 완료합니다.
다음 코드를 시작 샘플 애플리케이션으로 사용합니다.
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메서드로 변환해야 합니다. - 이 메서드는 발생한 각 유형의 문제에 대해 예외를 던져야 합니다.
-
Workflow1메서드는FormatException예외를 catch하고 핸들해야 합니다. - 최상위 문은
DivideByZeroException예외를 catch하고 핸들해야 합니다. - 예외의 속성은
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.
행운을 빌어!