【发布时间】:2011-05-31 02:45:51
【问题描述】:
这是一个关于什么是声明新变量的“最佳实践”的问题,我已经见过这种情况几次了。我有一个类,其构造函数读取配置文件,例如:
ConfigMgr config = new ConfigMgr(args[0]);
当然,如果您在没有该参数的情况下运行控制台应用程序,则会导致异常。如果我按如下方式用 try/catch 包围该行,则会收到错误消息“当前上下文中不存在名称 'config'”。可以理解。
try
{
ConfigMgr config = new ConfigMgr(args[0]);
}
catch
{
Console.WriteLine("Config file not specified or incorrect in format. Exiting.");
Console.ReadLine();
}
// Defaults
string aucomposingfile = config.getValue("aucomposingfile");
string nzcomposingfile = config.getValue("nzcomposingfile");
...etc
我可以在构造函数中分离出需要参数的部分 - 在 try/catch 块之外执行新的 ConfigMgr 部分,然后在 try/catch 中执行类似 config.LoadFile() 的操作。但我无法想象那些知情人士会这样做。
有什么想法吗?
谢谢!
【问题讨论】:
-
为什么你认为它错了......我想每个人都这样做
-
感谢大家的cmets。我不确定将哪一个标记为答案,因为两个答案都很好地解释了它。任何建议表示赞赏(底部是“第一个”答案)?两者都得到我的支持!
标签: c# .net constructor try-catch scope