我有下面的代碼有什麼異常:我應該處理
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);
}
我試圖發現可能的問題,例如:/文件名是空的。
在,捕捉和記錄異常我顯然具有由StreamReader
構造和FileInfo
構造函數拋出catch(ArgumentNullException ex)
我應該還可以抓住可能出現的異常類?
我知道這聽起來很愚蠢,但我想知道是否應該對我拋出的異常有明確的捕獲,然後發現一個普通的異常捕獲它是否是catch(Exception ex)
或者嘗試捕獲上述代碼並重新拋出自定義異常。否則,我的try/catch塊有大約12個獨立的catch語句!
向Eric Lippert的有關不同種類的例外和正確方法的文章規定[鏈接](http://blogs.msdn.com/b/ericlippert/archive/2008/09/10/vexing-exceptions.aspx)來處理它們。 – 2012-04-03 08:46:57
@FrédéricHamidi但是在StreamReader/FileInfo的情況下,我不能做很多事情。如果我檢查自己的文件名是無效的,我會自己拋出異常,並有一個捕獲,所以我並沒有真正阻止任何事情 – 2012-04-03 08:53:33