【发布时间】:2015-09-01 08:42:49
【问题描述】:
我有以下代码。
try
{
int s=10;
int k=0;
int stdsd = s / k;
}
catch (DivideByZeroException ext)
{
FileStream fs = new FileStream(@"C:\temp\data.txt", FileMode.Open);
//encountered an exception as file doesn't exist.
}
catch (Exception ex)
{
}
finally
{
//some code here.
}
在上面的代码中,当发生异常时,它会尝试将其写入 catch 块中的一个文件中。但是当它试图打开该文件时,该文件不存在,因此在这种情况下系统崩溃了。我想在 finally 块中执行这样的关键代码,但由于 catch 块中的异常,它不会更进一步。
我知道我们可以检查文件是否存在检查,但我不想在这里检查文件是否存在检查,我想知道如何在 catch 块中管理它。 能否请协助在 catch 块中管理异常的最佳方法。
【问题讨论】:
-
良好的编程习惯——你应该有一个专门的方法/类来执行所有与日志相关的操作。顺便说一句,在写入文件之前不要检查文件是否存在,这是一个糟糕的编程设计,因为在
File.Exists调用到File.Write调用之间可能会删除文件 -
为什么不将打开的文件封装在 try catch 块中?