簡單的說,我在我的代碼中隨處可見catch(Exception e)
。 但是,我想有一個類型,這將不被捕獲這種捕獲..如何拋出一個沒有捕捉到異常的異常
我查找所有類型,並嘗試其中的大部分,他們似乎都被捕獲... SystemException等
我怎麼能拋出一個錯誤,跳過這個catch?
簡單的說,我在我的代碼中隨處可見catch(Exception e)
。 但是,我想有一個類型,這將不被捕獲這種捕獲..如何拋出一個沒有捕捉到異常的異常
我查找所有類型,並嘗試其中的大部分,他們似乎都被捕獲... SystemException等
我怎麼能拋出一個錯誤,跳過這個catch?
在C#提供6.0你可以定義異常過濾器,這將允許你做你想做的,但如果你需要做到這一點,你可能需要解決問題的真正根源。
try
{
...
}
catch (Exception ex) if (ex.GetType() != typeof(YourExceptionToIgnore))
{
...
}
僅供參考,醒目Exception
類型的異常在框架指引防止建議 - 在這篇文章中提到的其他地方,你應該只捕獲你期望提高的具體異常類型。
你不能。然而,你可以這樣編碼,使得catch塊什麼都不做,或者你可以把必須發生的事情放到finally塊中
我想要一個不會被這個catch捕獲的類型
在catch(Exception e)
之前抓住你想要的更具體的「類型」。這樣,你可以專門處理更具體的「類型」Exception
正如其他人建議你應該只捕獲特定類型的異常作爲推薦的做法。雖然你可以使用異常濾波器,在最新版本的C#6
try
{
// Some exception
}
catch (Exception e) if (e.Getype() != typeof(YourCustomException))
{
// handle exception except of type YourCustomException
}
您可以在catch
內嘗試一個空的catch
或switch-case
。
抓住更具體的例外,這是一個很好的習慣,進入... – BlackBear
我雖然,但已經有太多的代碼...會有一個旁路,因爲我沒有訪問所有的漁獲量,所以我不能改變它們。 – Cher
考慮打開描述您實際嘗試解決的問題的問題。可能有更好的方法。 – Jonesopolis