텍스트 Rpg - C#

C#으로 만드는 텍스트 Rpg (8)

게임만드는학생 2025. 2. 6. 03:32

미션 7: 예외 처리와 에러 로그

  • 목표: 예외 처리를 활용하여 안전한 게임 로직을 구현한다.
  • 미션:
    1. 아이템 사용 시, 아이템이 없으면 적절한 예외 메시지를 출력해라.
    2. 예외가 발생했을 때 에러 로그를 파일로 저장하는 코드를 작성해라.

 

마지막 미션이다. 

예외처리를 해보고 에러 로그를 파일에 저장하는 것이다 .

 

// 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와 시각적인 요소들을 갖춘 게임을 만들어볼 계획이다. 

 

그 프로젝트를 통해 유니티의 여러가지를 학습할 예정이다.