C# try 키워드란?
try 블록은 특정 예외가 활성화되는 코드 영역을 식별하는 역할을 합니다. 즉, 실행 중 오류가 발생할 가능성이 있는 문장들을 try 블록 내부에 배치하면, 해당 구간에서 발생한 예외를 감지하고 적절히 처리할 수 있습니다.
try 블록은 단독으로 사용할 수 없으며, 뒤에 반드시 하나 이상의 catch 블록이 따라와야 합니다. catch 블록에는 실제 예외가 발생했을 때 실행될 오류 처리 코드를 작성합니다.
try-catch 기본 문법
예외를 잡아내려면 catch 문도 반드시 함께 설정해야 합니다.
try {
// 예외를 유발하는 문장
} catch( ExceptionName e1 ) {
// 오류 처리 코드
}catch 블록의 괄호 안에는 처리하려는 예외 형식을 명시합니다. 예를 들어 0으로 나누기 오류는 DivideByZeroException으로 처리할 수 있고, 여러 종류의 예외가 예상된다면 catch 블록을 여러 개 두어 각각 다르게 대응할 수도 있습니다.
예제
다음은 0으로 나누기를 시도할 때 발생하는 예외를 try-catch로 처리하고, finally 블록에서 결과를 출력하는 전체 예제입니다.
class Demo {
int result;
Demo() {
result = 0;
}
public void division(int val1, int val2) {
try {
result = val1 / val2;
} catch (DivideByZeroException e) {
Console.WriteLine("Exception caught: {0}", e);
} finally {
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args) {
Demo d = new Demo();
d.division(100, 0);
Console.ReadKey();
}
}위 코드는 100을 0으로 나누려다 DivideByZeroException 예외를 발생시키며, catch 블록이 해당 예외를 정상적으로 잡아냅니다. 또한 finally 블록은 예외 발생 여부와 관계없이 항상 실행되므로, 연산 결과 값이 마지막에 출력됩니다.
출력
Exception caught: System.DivideByZeroException: Attempted to divide by zero. at Program.Demo.division (System.Int32 val1, System.Int32 val2) [0x00000] in <0d240b2120114744a121b66d65545f3f>:0 Result: 0