텍스트 Rpg - C#
C#으로 만드는 텍스트 Rpg (8)
게임만드는학생
2025. 2. 6. 03:32
미션 7: 예외 처리와 에러 로그
- 목표: 예외 처리를 활용하여 안전한 게임 로직을 구현한다.
- 미션:
- 아이템 사용 시, 아이템이 없으면 적절한 예외 메시지를 출력해라.
- 예외가 발생했을 때 에러 로그를 파일로 저장하는 코드를 작성해라.
마지막 미션이다.
예외처리를 해보고 에러 로그를 파일에 저장하는 것이다 .
// ItemManager
public void LogError(Exception ex)
{
string logMessage = $"[{DateTime.Now}] 예외 발생: {ex.Message}\n{ex.StackTrace}\n";
File.AppendAllText("error_log3.txt", logMessage);
Console.WriteLine("오류가 발생했습니다. 로그 파일을 확인하세요.");
}
public void UsedItem(string itemName, Player player)
{
try
{
if (Inventory.ContainsKey(itemName) == false)
{
throw new Exception($"{itemName}이 없습니다.");
}
Item it = Inventory[itemName][0];
IUseableItem? useableItem = it as IUseableItem;
if (useableItem == null)
{
Console.WriteLine("소비아이템이 아닙니다!"); return;
}
useableItem.Use(player);
OnUsedItem?.Invoke($"아이템 로그 : {it.Name}을 사용!");
RemoveItem(itemName);
if (it is DurationItem)
RegistItem(it);
}
catch (Exception e)
{
LogError(e);
Console.WriteLine("아이템을 사용할 수 없습니다. 존재하는 아이템을 선택하세요.");
}
}
아이템 매니저에서 아이템을 사용하는 곳에서 만약 없는 아이템을 사용하려 했다면 오류를 발생시키고 이를 로그에 기록한다.
try-catch 문을 활용하여 오류를 발생시켰고 이 때, LogError 함수를 실행시킨다.
이 함수는 AppendAllText 함수를 통해 텍스트파일에 로그를 기록한다.
이것으로 텍스트 rpg를 기획한 목적을 달성했다.
c#문법을 여러가지 사용해보며 익혔고, 적용해보았다.
이것을 바탕으로 유니티로 옮겨서 더 확장해 ui와 시각적인 요소들을 갖춘 게임을 만들어볼 계획이다.
그 프로젝트를 통해 유니티의 여러가지를 학습할 예정이다.