본문 바로가기

C#/기본 문법

C# Exception(예외처리)

 

 

 

 

전체 코드


 

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

namespace Rookiss_CSharp
{
    // https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N
    // 60강 Exception(예외처리)

    // 게임쪽에서는 잘 안쓰는 경향이 있음
    // 게임에서는 해봐도 아무 의미가 없음
    // 코드가 잘못되었다면, 다른 사람도 똑같은 에러가 난다는 의미
    // 크래시가 나면 순수하게 크래시나게 내버려둠
    // 크래시가 나면 로직을 빨리 수정하는편이 좋음
    // 단점 : 에러나도 버텨도 큰 의미가 없음
    // 에러가 나도 커버가 되지 않음

    // 치명적이라면 크래시 내는게 맞지만
    // 가끔보면 덜 치명적인 예외사항 : 네트워크 접속실패(이런것은 받아서 처리하는게 좋음)

    class Program
    {
        // 함수 안에서 에러 던져도 됨
        /*
        static void TestFunc()
        {
            throw new TestException();
        }
        */

        // 직접 예외 정의 가능
        // Exception 무조건 상속받아야함
        class TestException : Exception
        {
        }

        static void Main(string[] args)
        {
            // 밖에서 할시 프로그램이 죽어버림
            /*
            int a = 10;
            int b = 0;
            int result = a / b;
            */

            // 야구 느낌 : try(야구공을 던지면), catch(포수가 야구공을 잡음)

            try // 시도하다
            {
                // 예외상황 예시
                // 1. 0으로 나눌때
                // 2. 잘못된 메모리를 참조(null)
                // 3, 오버플로우

                int a = 10;
                int b = 0;
                int result = a / b; // 여기서 에러 발생시 -> catch 문으로 이동하여 try 밑에 코드가 실행되지 않음

                // throw new TestException(); // 강제로 에러발생
                // TestFunc();
            }
            catch (DivideByZeroException e) // if else문이랑 비슷, 여기서 처리되면 밑에서 처리안함
            {
                // DivideByZeroException : 0으로 나누기 오류(Exception 클래스 상속 받음)

            }
            catch (Exception e) // catch : 잡다, Exception : 모든 예외의 조상님 같은 존재
            {
                // try문 안에서 예외발생시 catch 안에서 어떻게든 처리함

            }
            // 순서 바꾸면 에러남 : Exception 최상위 조상이어서, 밑에 애들은 실행되지 않을 것임
            /*
            catch (Exception e)
            {
            }
            catch (DivideByZeroException e)
            {
            }
            */
            finally // 예외 발생하더라도 최종적으로 실행되는 코드
            {
                // 파일 입출력 => 에러나도 파일 정리
                // 데이터베이스 연결 => 에러나도 정리
            }
        }
    }
}

 

 

 

 

 

 

 


 

 

 

출처


https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-mmorpg-%EA%B0%9C%EB%B0%9C-part1?srsltid=AfmBOopkXVxKs-MQPYZkTjEYW-yIDMO5xP7l5hQq0hQasUWhobvyKO6N

 

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문| Rookiss - 인프런 강

현재 평점 4.9점 수강생 6,987명인 강의를 만나보세요. 기초 프로그래밍 지식이 없는 사람들을 위한 C# 프로그래밍 기초 강의입니다. 문법 암기 위주의 수업이 아니라, 최대한 필요한 부분만을 요

www.inflearn.com

60강 Exception(예외처리)

 

'C# > 기본 문법' 카테고리의 다른 글

C# Nullable(널러블)  (1) 2025.12.14
C# Reflection(리플렉션)  (0) 2025.12.14
C# lambda(람다)  (0) 2025.12.14
C# Event(이벤트)  (0) 2025.12.14
C# Delegate(대리자)  (0) 2025.12.14