C#에서 예외(Exception)는 클래스 형태로 표현됩니다. C#의 예외 클래스들은 대부분 System.Exception 클래스를 기반으로 직접 또는 간접적으로 상속받아 구성되어 있습니다. System.Exception 클래스에서 파생된 대표적인 예외 클래스로는 System.ApplicationException과 System.SystemException이 있습니다.
System.DivideByZeroException은 숫자를 0으로 나눌 때 발생하는 오류를 처리하는 클래스입니다. 정수형 나눗셈에서 나누는 수가 0이면 런타임에 이 예외가 자동으로 발생하며, 적절히 처리하지 않으면 프로그램이 비정상 종료될 수 있습니다.
DivideByZeroException 예제 코드
다음 예제는 try-catch-finally 구문을 사용하여 0으로 나누기 오류를 안전하게 처리하는 방법을 보여줍니다.
using System;
namespace ErrorHandlingApplication {
class DivNumbers {
int result;
DivNumbers() {
result = 0;
}
public void division(int num1, int num2) {
try {
result = num1 / num2;
} catch (DivideByZeroException e) {
Console.WriteLine("Exception caught: {0}", e);
} finally {
Console.WriteLine("Result: {0}", result);
}
}
static void Main(string[] args) {
DivNumbers d = new DivNumbers();
d.division(25, 0);
Console.ReadKey();
}
}
}코드 설명
try 블록: 나눗셈 연산(num1 / num2)을 시도합니다. 여기서 num2가 0이므로 DivideByZeroException이 발생합니다.
catch 블록: 발생한 예외를 잡아 콘솔에 예외 정보를 출력합니다. 프로그램이 중단되지 않고 계속 실행됩니다.
finally 블록: 예외 발생 여부와 관계없이 항상 실행되며, 결과값을 출력합니다.
실행 결과
Exception caught: System.DivideByZeroException: Attempted to divide by zero. at ErrorHandlingApplication.DivNumbers.division (System.Int32 num1, System.Int32 num2) [0x00000] in <a9b37148b4814c1a849bf4ee94fbe889>:0 Result: 0
실행 결과를 보면, 0으로 나누기를 시도한 순간 System.DivideByZeroException: Attempted to divide by zero. 메시지와 함께 예외가 잡혔고, catch 블록에서 해당 내용을 출력했습니다. 이후 finally 블록이 실행되어 초기화된 값인 0이 결과로 출력된 것을 확인할 수 있습니다.
정리
DivideByZeroException은 실무에서 매우 흔하게 마주치는 예외입니다. 사용자 입력값으로 나눗셈을 수행하는 경우에는 반드시 나누는 값이 0인지 사전에 검사하거나, 위 예제처럼 try-catch 구문으로 예외를 처리하여 프로그램의 안정성을 확보하는 것이 좋습니다.