2014-05-20 66 views
0

我有一個嘗試趕上,如果字符串具有無效的Windows路徑字符應該捕獲異常。C#:嘗試,趕上沒有捕獲異常

  try 
      { 
       Result = Path.GetFullPath(pathname); 
      } 

      catch (System.IO.IOException e) 
      { 
       CatchResult = (e); 
      } 

但是一個異常仍然在被拋出,並且應用程序崩潰了。有任何想法嗎?

+2

什麼是拋出異常? – ClickRick

回答

2

MSDN指出Path.GetFullPath()引發5種異常但不是IOException。您必須捕獲正確類型的異常。有關更多信息,請參見documentation

+0

['PathTooLongException'](http://msdn.microsoft.com/zh-cn/library/system.io.pathtoolongexception%28v=vs.110%29.aspx)是從'IOException'派生的,所以他的catch得到那一個。 –

2

Path.GetFullPath(string)不會拋出IOException作爲它的一個可用異常。

請仔細閱讀在Path.GetFullPath MSDN

例外的例外列表拋出:

  1. 的ArgumentException
  2. 拋出:SecurityException
  3. ArgumentNullException
  4. NotSupportedException異常
  5. PathTooLongException。
+1

公平地說,['PathTooLongException'](http://msdn.microsoft.com/zh-cn/library/system.io.pathtoolongexception%28v=vs.110%29.aspx)是IOException的後代, ,所以抓住會得到那一個。 –

+0

觸手可及。 –