【发布时间】:2012-04-16 21:47:47
【问题描述】:
我有以下代码:
public void OpenFile(string FileName)
{
if (FileName == null)
throw new ArgumentNullException("FileName", "OpenFile: Filename is null");
List<int> readItems = new List<int>();
using (StreamReader reader = new StreamReader(FileName))
{
string line;
int batchItem;
while ((line = reader.ReadLine()) != null)
{
if (int.TryParse(line, out batchItem))
{
readItems.Add(batchItem);
}
}
}
CurrrentFile = FileName;
FileInfo f = new FileInfo(FileName);
lock (LockObject)
{
TextWriter = f.AppendText();
TextWriter.AutoFlush = true;
}
if (readItems.Count > 0)
FileOpened(readItems);
}
我正在尝试检测可能的问题,例如/文件名为空。
在捕获和记录异常的类中,我显然有一个catch(ArgumentNullException ex)
我是否也应该捕获StreamReader 构造函数和FileInfo 构造函数可能引发的异常?
我知道这听起来很傻,但我想知道我是否应该对我抛出的异常有明确的捕获,然后是一般的异常捕获,无论它是 catch(Exception ex) 还是围绕上述代码尝试捕获并重新抛出自定义例外。否则我的 try/catch 块有大约 12 个单独的 catch 语句!
【问题讨论】:
-
必填link Eric Lippert 关于不同类型异常以及处理它们的正确方法的文章。
-
@FrédéricHamidi 但是在 StreamReader/FileInfo 的场景中,我无能为力。如果我检查自己的文件名是否无效,我会自己抛出异常并捕获它,所以我不会真正阻止任何事情
标签: c# .net exception design-patterns try-catch