Multiple Catch Blocks
Coddy C# 여정의 논리 및 흐름 섹션에 포함된 레슨 — 66개 중 25번째.
다중 catch 블록을 사용하면 각 예외 유형에 대해 특정 코드로 서로 다른 유형의 예외를 처리할 수 있습니다.
기본 try 블록으로 시작하세요:
try
{
int number = int.Parse("abc");
}
특정 예외에 대한 catch 블록을 추가:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
다양한 예외를 처리하기 위해 여러 catch 블록을 추가할 수 있습니다:
try
{
int number = int.Parse("abc");
int result = a10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
첫 번째 일치하는 catch 블록이 실행됩니다. catch 블록을 가장 구체적인 예외 유형부터 가장 일반적인 예외 유형 순으로 배치하세요.
챌린지
쉬움DivideNumbers라는 이름의 메서드를 생성하세요. 이 메서드는 두 개의 string 매개변수를 받습니다:
numeratorStr: 분자를 나타내는 문자열denominatorStr: 분모를 나타내는 문자열
이 메서드는 다음을 수행해야 합니다:
- 두 문자열을 모두 정수로 파싱하려고 시도하세요
- 분자를 분모로 나누려고 시도하세요
- 결과를 정수로 반환하세요
- FormatException을 처리하여 "Invalid format"을 출력하고 0을 반환하세요
- DivideByZeroException을 처리하여 "Cannot divide by zero"를 출력하고 0을 반환하세요
- 다른 모든 예외를 일반 catch 블록으로 처리하여 "An error occurred"를 출력하고 0을 반환하세요
치트 시트
여러 개의 catch 블록을 사용하면 각 예외 유형에 대해 특정 코드를 사용하여 다양한 유형의 예외를 처리할 수 있습니다.
특정 예외를 사용한 기본 try-catch:
try
{
int number = int.Parse("abc");
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
다른 예외를 위한 여러 catch 블록:
try
{
int number = int.Parse("abc");
int result = 10 / number;
}
catch (FormatException ex)
{
Console.WriteLine("Format Exception: " + ex.Message);
}
catch (DivideByZeroException ex)
{
Console.WriteLine("Divide By Zero Exception: " + ex.Message);
}
첫 번째 일치하는 catch 블록이 실행됩니다. catch 블록을 가장 구체적인 예외 유형부터 가장 일반적인 예외 유형 순서로 정렬하세요.
직접 해보기
using System;
public class Program
{
public static int DivideNumbers(string numeratorStr, string denominatorStr)
{
// 여기에 코드를 작성하세요
}
public static void Main(string[] args)
{
string numeratorStr = Console.ReadLine();
string denominatorStr = Console.ReadLine();
int result = DivideNumbers(numeratorStr, denominatorStr);
Console.WriteLine("Result: " + result);
}
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리 및 흐름의 모든 레슨
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety