본문 바로가기

C#

C# 기초 문법 TRY 예외처리 이렇게 사용하세요

반응형

아래의 화면은 사용자가 예외 처리를 하지 않았고 닷넷 플렛폼에서 예외를 처리한 화면이다.

빨간 칸의 글자가 문제가 확인된 곳이고 다시 역추척해서 원인을 찾아내는 화면이다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp10
{
    class Program
    {
        
        static void Main(string[] args)
        {
            int Num1;
            int Num2;
            double Num3;

            Console.Write("첫번째로 입력할 숫자 : ");
            Num1 = int.Parse(Console.ReadLine());
            Console.Write("두번째로 입력할 숫자 : ");
            Num2 = int.Parse(Console.ReadLine());

            Console.WriteLine(Num1);
            Console.WriteLine(Num2);

            try
            {
                Console.Write("첫번째로 입력할 숫자 : ");
                Num1 = int.Parse(Console.ReadLine());
                Console.Write("두번째로 입력할 숫자 : ");
                Num2 = int.Parse(Console.ReadLine());

                Console.WriteLine(Num1);
                Console.WriteLine(Num2);
                Num3 = Num2 / Num1;
            }
            catch (Exception)
            {

                Console.WriteLine("먼가가 발생함");
            }


            //string TempString = Console.ReadLine();
            //Num1 = int.Parse(TempString);
        }
    }
}
반응형

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp10
{
    class Program
    {
        
        static void Main(string[] args)
        {
            int Num1;
            int Num2;
            double Num3;

            //문제가 생겼을때 종류시키는게 능사는아니다

            while (true)
            {


                try
                {
                    Console.Write("첫번째 양수를 입력할 숫자 : ");
                    Num1 = int.Parse(Console.ReadLine());
                    if (Num1 <0)
                    {
                        Exception exception = new Exception(); //exception의 객체를 만들 수 있다 .
                        throw exception;// 예외를 만들고 예외를 던진다. -> 사용자가 예외를 만들었다.
                                        // 특정 조건일때 만 throw가 작동하도록 써야한다.
                    }
                    Console.Write("두번째 양수를 입력할 숫자 : ");
                    Num2 = int.Parse(Console.ReadLine());

                    //Console.WriteLine(Num1);
                    //Console.WriteLine(Num2);
                    Num3 = Num1 / Num2;
                    Console.WriteLine("결과값 : " + Num3);
                }

                catch (FormatException e)
                {
                    Console.WriteLine("문자를 입력함");
                    Console.WriteLine("=============");
                    Console.WriteLine(e);
                    Console.WriteLine("=============");

                    continue; //제대로 입력할때 까지 계속 돌릴 수 있음
                }
                catch (DivideByZeroException)
                {

                    Console.WriteLine("0입력 왜함? 디지실?");
                    continue;

                }
                catch (Exception)
                { 
                    Console.WriteLine("음침하게 음수를 왜 입력함?");
                    continue;

                }
                break;
            }


            
        }
    }
}

throw는 사용자가 마음대로 예외처리를 할 수 있는 명령어이다. 

일단 throw는 혼자 마음대로 못쓰고 꼭 조건문과 함께 써야한다.

예외문을 던지게 되면 객체의 타입에 맞는 캐치문에서 해당 예외를 받아 예외 처리를 하게 된다. 

 

 

반응형