1

我正在尝试File.ReadAllText用作静态只读字符串。我的问题是我正在用 .NETz 编译它,当我的程序启动时,它会查找我的字符串,如果没有找到,我会得到一个讨厌的异常。是否可以通过某种方式使用 if/else 来解决这个问题?

通常我会让它弹出一个消息框或在标签中说明找不到文件。如果找不到文件,使用 .Netz 我会收到一条错误消息并且程序无法启动。

这是我在整个程序中使用的静态字符串

static readonly string config = File.ReadAllText("config.ini");

我正在使用 .Netz 来包含我的 dll。

4

2 回答 2

5

与其在声明中内联,不如将工作移至静态构造函数。try/catch然后添加块来处理您认为合适的错误情况变得微不足道:

public class MyClass
{
    static readonly string config;

    static MyClass()
    {
        try
        {
            config = File.ReadAllText("config.ini");
        }
        catch (FileNotFoundException)
        {
            //do something else
            //use a default configuration?
            //report to the user?
            //crash and burn?
        }
    }
}

请注意,除了在路径中找不到之外,读取文件可能失败的原因还有很多。您可能还想考虑捕捉其中的一些。

于 2013-07-17T12:31:37.537 回答
0
public partial class Form1 : Form
{
    public class configi
    {
        public static string config;
        static configi()
        {
            try
            {
                config = File.ReadAllText("config.ini");

            }
            catch (FileNotFoundException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }
    }
    public Form1()
    {
        InitializeComponent();

    }

    static string username = (Environment.GetEnvironmentVariable("USERNAME"));
    static string Backups = configi.config + @"\" + username + @"\" + "Backups" + @"\";
    static string items;
于 2013-07-17T13:53:57.460 回答