| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| 16 | 17 | 18 | 19 | 20 | 21 | 22 |
| 23 | 24 | 25 | 26 | 27 | 28 | 29 |
| 30 |
- 취업
- 스파르타내일배움캠프TIL
- 까먹기전에메모
- 유니티
- 프로그래밍
- 후기
- 스파르타내일배움캠프
- 뭐드라
- 연습
- 게임 회사
- 붕괴스타레일
- 붕괴 스타레일
- spritelibrary
- 원신
- 게임분석
- c#
- 공부
- 취미
- materialpropertyblock
- 블렌더
- 나만의 견해
- LookAt
- spritemask2d
- til
- 게임용어
- 내일배움캠프
- 컴포넌트
- 코딩
- ag 내일배움캠프
- 점프
- Today
- Total
덴바의 노트
내일배움캠프 7일차 TIL 본문

오늘의 학습 키워드
- 예외 처리 Try - Catch -Final 구문
"개발자라면 이 단어를 한 번은 들어봤을 것입니다...."
예외 처리
어떤 프로그램이라도 오류가 전혀 발생하지 않는 프로그램은 아마 없을 것이다. 예외 처리란 무엇일까?
코드 문법 오류, NullReference (널 객체 참조), 계산 불가 오류 등...
프로그램이 실행 중 예기치 못한 상황이 발생하여 프로그램이 중단되는 상황을 방지하는 것을 의미합니다.

예외 처리가 없다면 프로그램은 그대로 꺼져버리게 되는데, 이 부분의 심각성을 예시로 든다면,
6시간 이상 플레이 했던 게임의 세이브 데이터가 예외 발생으로 인해 튕기면서
모든 데이터가 날라가는 상황을 상상해보면 이에 대한 중요성을 확실히 알 수 있습니다.

그럼 C#에서의 예외 처리를 하는 방식은 무엇이 있을까?
그것은 바로

Try-Catch-Final
사용 방법
try
{
int result = 10 / 0;
Console.WriteLine(result);
}catch(DivideByZeroException ex)
{
Console.WriteLine(ex.Message);
}
catch(Exception ex) {
Console.WriteLine(ex.Message);
}
finally
{
Console.WriteLine("마지막 블록 실행");
}
C#에서는 먼저 Try 블록 내에 예외가 발생하면 안되는 또는 발생하지 않길 바라는 중요한 부분의 코드를 넣습니다.
예로 들어서 게임의 데이터를 저장하는 구간의 코드의 경우는 저장 버튼을 눌렀는데 데이터가 날라가면 안되겠죠?
그러한 부분에 Try문을 이용하여 예외를 파악할 수 있게 합니다.
Catch블록에는 예외를 인지하고 유니티의 경우 Debug.Log(), C#의 경우 Console.Write() 등을 활용하여 로깅을 합니다.
로깅을 한다면 Runtime 중에서 발생하는 오류에 대해서 인지하고 수정 시 매우 편할 것 입니다.
Final 블록에서는 예외가 발생하던 안하던 무조건 작업을 실행합니다.
예외 발생 시 정리 작업이나 리소스 해제 등의 코드를 포함합니다.
이를 통해서 프로그램의 회복성을 갖출 수 있습니다.
Try-Catch문의 주의 사항
Try-Catch문을 사용하면 예외처리를 간단하게 할 수 있다는 점은 매우 좋은 장점입니다.
하지만, Try-Catch문을 중요한 기능을 담당하는 코드가 아닌 부분에도 상관 없이 남발하게 되면,
2가지의 문제점이 있습니다.
가독성과 유지보수의 어려움
먼저 가독성이 매우 떨어지며 다양한 불필요한 버그 등이 발생하여 코드가 매우 복잡해질 수 있습니다.
오버 헤드 발생
Try-Catch문을 사용하면 오버헤드가 발생하기 때문에 남발하면 프로그램에 큰 부하를 줄 수 있습니다.
결론
Try-Catch문을 알고 사용하는 것은 매우 중요합니다.
하지만 이를 남발하여 사용하면 프로그램의 성능에 큰 부담을 줄 수 있습니다.
그렇기에 코드의 중요한 부분에 Try-Catch문을 사용하는 신중성이 요구됩니다.
오늘의 회고
프로그램을 튕기지 않게 계속해서 유지할 수 있게하기 위해서 필수인 예외 처리를 배웠습니다.
해당 기능을 본 순간, 아 이건 메모리 관리, 저장, 로드 등
데이터가 매우 유동적인 부분에 사용해야 한다는 것을 알 수 있었습니다.
'프로그래밍 노트 > TIL' 카테고리의 다른 글
| 내일배움캠프 9일차 WIL (1) | 2024.04.26 |
|---|---|
| 내일배움캠프 8일차 TIL (1) | 2024.04.25 |
| 내일배움캠프 6일차 TIL (0) | 2024.04.23 |
| 내일배움캠프 5일차 TIL (0) | 2024.04.22 |
| 내일배움캠프 4일차 WIL (0) | 2024.04.19 |