C#/문법 정리

C# - 나눔 예외처리 (DivideByZeroExeption)

Khadra 2024. 6. 24. 08:16

C#에서는 실행 중에 나오는 에러를 예외라고 한다.


산술연산에서 나올 수 있는 예외는 0으로 2가지로 분류된다.

  • 나눔 예외처리 (DivideByZeroExeption)
  • 오버플로우 예외처리 (Overflow Exception)

나눔 예외처리 (DivideByZeroExeption)

예제 코드

using System;
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 10, y = 0;

            // 10.0/y는 실수를 0으로 나누기때문에
            // 예외가 아닌 ∞를 출력한다.
            WriteLine(10.0 / y);

            // x/y를 할 때 y값이 0이기 때문에 0으로 
            // 나눔 예외가 발생한다.
            WriteLine(x / y); 
        }
    }
}

결과

∞
Unhandled exception. System.DivideByZeroException: Attempted to divide by zero.


위와 같이 예외 처리하기 위해 try-catch 문을 사용한다.

  • 프로그램 중에 나누기 계산을 할때는 위의 예제와 같이 y가 어떤 값인지 모르기 때문에
    이런 예외의 가능성이 있다.
  • 만약 실행 중에 y가 0이라면 "처리되지 않은 예외"를 출력하고 종료되어 버린다.

예제 코드

using System;
using static System.Console;//Console단어를 생략(코드길이줄어둠)
namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            int x = 10, y = 0;

            try           
            {  
                //나누기 연산을 하는 13번줄에  
                //try~catch 문의 try문 안에 넣는다.
                WriteLine(x / y);
            }
            catch (Exception e)  //catch문을 예외가 발생하면 실행된다.
            {                    //여기서는 Exception 클래스의massage 속성을 출력하게 한다.

                //"0으로 나누려 했습니다."라고 출력한다.
                //try~catch문은 예외 처리를 하고 다음 문장으로 진행한다.
                WriteLine(e.Message);
            }                        
        }
    }
}

결과

Attempted to divide by zero.