만들기 및 throw 예외 챌린지에 대한 솔루션 검토
다음 코드는 이전 단원의 챌린지에 대한 한 가지 가능한 솔루션입니다.
string[][] userEnteredValues = new string[][]
{
new string[] { "1", "2", "3"},
new string[] { "1", "two", "3"},
new string[] { "0", "1", "2"}
};
try
{
Workflow1(userEnteredValues);
Console.WriteLine("'Workflow1' completed successfully.");
}
catch (DivideByZeroException ex)
{
Console.WriteLine("An error occurred during 'Workflow1'.");
Console.WriteLine(ex.Message);
}
static void Workflow1(string[][] userEnteredValues)
{
foreach (string[] userEntries in userEnteredValues)
{
try
{
Process1(userEntries);
Console.WriteLine("'Process1' completed successfully.");
Console.WriteLine();
}
catch (FormatException ex)
{
Console.WriteLine("'Process1' encountered an issue, process aborted.");
Console.WriteLine(ex.Message);
Console.WriteLine();
}
}
}
static void Process1(String[] userEntries)
{
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
{
throw new DivideByZeroException("Invalid data. User input values must be non-zero values.");
}
}
else
{
throw new FormatException("Invalid data. User input values must be valid integers.");
}
}
}
이 애플리케이션을 실행하면 필요한 출력이 생성됩니다.
'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.
예외를 만들고 throw하는 여러 가지 방법이 있기 때문에 이 코드는 단지 "하나의 가능한 솔루션"에 불과합니다. 당신이 도전의 규칙에 따라 올바른 결과를 얻은 한, 당신은 좋은했다!
성공하셨다면 축하합니다. 다음 단원에서 지식 점검을 계속 진행합니다.
중요합니다
이 과제를 완료하는 데 문제가 있는 경우 계속 진행하기 전에 이전 단원을 복습해야 할 수도 있습니다.