전체 코드
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 // 예외 발생하더라도 최종적으로 실행되는 코드
{
// 파일 입출력 => 에러나도 파일 정리
// 데이터베이스 연결 => 에러나도 정리
}
}
}
}
출처
[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 |