2016-05-11 95 views
0

簡單的說,我在我的代碼中隨處可見catch(Exception e)。 但是,我想有一個類型,這將不被捕獲這種捕獲..如何拋出一個沒有捕捉到異常的異常

我查找所有類型,並嘗試其中的大部分,他們似乎都被捕獲... SystemException等

我怎麼能拋出一個錯誤,跳過這個catch?

+1

抓住更具體的例外,這是一個很好的習慣,進入... – BlackBear

+0

我雖然,但已經有太多的代碼...會有一個旁路,因爲我沒有訪問所有的漁獲量,所以我不能改變它們。 – Cher

+1

考慮打開描述您實際嘗試解決的問題的問題。可能有更好的方法。 – Jonesopolis

回答

1

在C#提供6.0你可以定義異常過濾器,這將允許你做你想做的,但如果你需要做到這一點,你可能需要解決問題的真正根源。

try 
{ 
    ... 
} 
catch (Exception ex) if (ex.GetType() != typeof(YourExceptionToIgnore)) 
{ 
    ... 
} 

僅供參考,醒目Exception類型的異常在框架指引防止建議 - 在這篇文章中提到的其他地方,你應該只捕獲你期望提高的具體異常類型。

1

你不能。然而,你可以這樣編碼,使得catch塊什麼都不做,或者你可以把必須發生的事情放到finally塊中

0

我想要一個不會被這個catch捕獲的類型

catch(Exception e)之前抓住你想要的更具體的「類型」。這樣,你可以專門處理更具體的「類型」Exception

0

正如其他人建議你應該只捕獲特定類型的異常作爲推薦的做法。雖然你可以使用異常濾波器,在最新版本的C#6

try 
{ 
// Some exception 
} 
catch (Exception e) if (e.Getype() != typeof(YourCustomException)) 
{ 
// handle exception except of type YourCustomException 
} 
0

您可以在catch內嘗試一個空的catchswitch-case