使用()/ Try-Catch保存/加载

时间:2013-04-16 00:47:16

标签: c# stream using-statement

我在过去几个小时里一直在研究如何为我正在制作的游戏实现简单的保存/加载功能。

保存数据存储在文本文件中,在游戏期间玩家可以保存,存储播放器和播放器。敌人的位置,得分等。

我正在使用StreamWriter& StreamReader为此而无法决定是使用using语句还是try-catch来实现它。

为了节省空间,我只列出Save方法,因为它们与加载方法基本相同。

是:

 static void SaveAccounts(string path)
      {

            using (StreamWriter writer = new StreamWriter(path))
            {
                writer.WriteLine(accountNumber);
                writer.WriteLine(name);
                writer.WriteLine(address);
                writer.WriteLine(balance);     
            }
      }

尝试抓住

    public void Save(StreamWriter writer)
     {
        writer.WriteLine(accountNumber);
        writer.WriteLine(name);
        writer.WriteLine(address);
        writer.WriteLine(balance);
     }

    public void Save(string filename)
    {
       StreamWriter writer = null;
        try
        {
            writer= new StreamWriter(filename);
            Save(writer);
        }
        catch (Exception e)
        {
            throw e;
        }
        finally
        {
            if (writer!= null) writer.Close();
        }
    }

在这种情况下,我使用'帐户'代替我的精灵,看起来更简单。

所以任何人都可以告诉我你将使用哪些内容?如果有的话。

非常感谢

2 个答案:

答案 0 :(得分:3)

您应该使用using声明。

没有理由写出额外的8行代码完全相同,但是错误 也没有理由编写额外的4行代码来正确地执行相同的操作。

答案 1 :(得分:1)

我会使用try/catch,即使它需要更多行。为什么?因为使用using,您无法控制出现异常时会发生什么。使用try/catch即可。

作为一个例子,想象一下如果在保存过程中出现异常会发生什么。使用using,程序只需停止并关闭文件即可,无论您的程序能够编写什么信息。那是不完整的。使用try/catch,您可以决定删除该文件。您还可以将所有内容写入临时文件并仅在所有代码都正常工作时复制到最终位置,如果不是只删除临时文件。