我正在从文件中读取数据并根据此数据创建对象.数据格式不受我的控制,偶尔也会损坏.在C#中构造对象时,最合适的处理这些错误的方法是什么?
在其他编程语言中,我返回了一个null,但这似乎不是C#的一个选项.
我已经设法找出以下选项,但我希望更有经验的C#程序员的建议:
选项1.读取构造函数内的文件,并在源数据损坏时抛出异常:
try
{
obj = Constructor(sourceFile);
... process object ...
}
catch (IOException ex)
{
...
}
Run Code Online (Sandbox Code Playgroud)
选项2.创建对象,然后使用方法从源文件中读取数据:
obj = Constructor();
obj.ReadData(sourceFile);
if (obj.IsValid)
{
... process object ...
}
Run Code Online (Sandbox Code Playgroud)
或者可能在出错时抛出异常:
obj = Constructor();
try
{
obj.Read(sourceFile);
... process object ...
}
catch
{
...
}
Run Code Online (Sandbox Code Playgroud)
选项3.使用静态TryParse方法创建对象:
if (ObjClass.TryParse(sourceFile, out obj))
{
... process object ...
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,我应该在内部使用选项1实现选项3吗?
public static bool TryParse(FileStream sourceFile, out ObjClass obj)
{
try
{
obj = Constructor(sourceFile);
return true; …Run Code Online (Sandbox Code Playgroud) 可能重复:
C#成员变量初始化; 最佳实践?
这有什么好处:
public class RemotingEngine
{
uint m_currentValueId;
object m_lock;
public RemotingEngine()
{
m_currentValueId = 0;
m_lock = new object();
}
Run Code Online (Sandbox Code Playgroud)
与此:
public class RemotingEngine
{
uint m_currentValueId = 0;
object m_lock = new object();
Run Code Online (Sandbox Code Playgroud)
我一直在避开第二个因为它感觉"脏".这显然不那么打字,所以这对我很有吸引力.