Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# DivideByZeroException 클래스 이해하기: 0으로 나누기 오류 처리 방법

C#에서 예외(Exception)는 클래스 형태로 표현됩니다. C#의 예외 클래스들은 대부분 System.Exception 클래스를 기반으로 직접 또는 간접적으로 상속받아 구성되어 있습니다. System.Exception 클래스에서 파생된 대표적인 예외 클래스로는 System.ApplicationExceptionSystem.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 구문으로 예외를 처리하여 프로그램의 안정성을 확보하는 것이 좋습니다.