除了“throw new”之外,还有其他方法可以查看程序在发生异常时的行为吗?
Is there any other way to see a program's behavior when an exception occurs beside `throw new`?
我正在用 C# 编写一个例程,该例程使用 File.ReadAllLines
函数从文本文件中读取行。代码如下:
private void ReadFromLibrary()
{
string[] ReadBuffer = new string[] { };
try
{
ReadBuffer = File.ReadAllLines("Library.txt");
}
catch (FileLoadException F)
{
MessageBoxButtons MB = MessageBoxButtons.OK;
MessageBoxIcon MI = MessageBoxIcon.Error;
MessageBox.Show(F.Message, "Error!", MB, MI);
}
}
我想看看当 FileLoadException
异常发生时此函数在运行时的行为。我不认为手动改变我的机器状态所以这个异常发生是一个好主意,我知道的唯一选择是在从文件读取后插入 throw new FileLoadException
。
有没有其他方法可以得到同样的结果?我没有发现使用 throw new
有什么问题,但我想知道我是否可以用另一种方式来做。
正如杰里米所说,
Give the class constructor a IFile
interface argument. Then in a Unit
Test on ReadFromLibrary
mock the File.ReadAllLines
method to throw a
FileLoadException
and pass the mocked IFile
to the constructor before
calling the ReadFromLibrary
method.
我正在用 C# 编写一个例程,该例程使用 File.ReadAllLines
函数从文本文件中读取行。代码如下:
private void ReadFromLibrary()
{
string[] ReadBuffer = new string[] { };
try
{
ReadBuffer = File.ReadAllLines("Library.txt");
}
catch (FileLoadException F)
{
MessageBoxButtons MB = MessageBoxButtons.OK;
MessageBoxIcon MI = MessageBoxIcon.Error;
MessageBox.Show(F.Message, "Error!", MB, MI);
}
}
我想看看当 FileLoadException
异常发生时此函数在运行时的行为。我不认为手动改变我的机器状态所以这个异常发生是一个好主意,我知道的唯一选择是在从文件读取后插入 throw new FileLoadException
。
有没有其他方法可以得到同样的结果?我没有发现使用 throw new
有什么问题,但我想知道我是否可以用另一种方式来做。
正如杰里米所说,
Give the class constructor a
IFile
interface argument. Then in a Unit Test onReadFromLibrary
mock theFile.ReadAllLines
method to throw aFileLoadException
and pass the mockedIFile
to the constructor before calling theReadFromLibrary
method.