[英]Reading exception from try catch when exception type not specified
在您使用try catch塊的情況下。
try {
//Do my work!
}
catch
{
//Handle my exception
}
有沒有辦法在catch塊中引用異常對象?
即:
try {
//Do my work!
}
catch
{
//Handle my exception
MyUndefinedExceptionObject.Message ????
}
編輯:我認為我不夠清楚。 我知道如何使用try catch塊捕獲異常。 我想知道的是,你有能力不為你的異常指定一個類型但是聲明塊在這種情況下仍然有一些方法來檢索異常對象嗎? 從你的答案判斷,但我認為沒有?
是的,像這樣:
try
{
//Do my work!
}
catch (mySpecificException myEx)
{
//Handle my exception
}
catch (Exception ex)
{
//Handle my exception
}
(最具體到最不具體)
沒有。
使用裸catch
表示您不關心實際異常,否則,為什么不使用
catch (System.Exception ex)
抓住任何例外? 當然,您應該只捕獲您將處理的異常。
您需要指出要捕獲的特定異常類型,並將其分配給變量。
改為使用此語法:
try
{
// Do work
}
catch (MyUndefinedExceptionObject ex)
{
Debug.WriteLine(ex.Message);
}
您還可以包含多個 catch塊,並相應地更改異常類型。 但是,請記住,您應始終從大多數派生到最少派生的順序排序,以所有異常的基類結束, System.Exception
。
您通常也應該避免捕獲System.Exception
,而只是優先捕獲可以在catch
塊中處理的派生異常,並且不會破壞程序的狀態。 捕獲System.Exception
類是一個壞主意,因為您還將捕獲無法處理的異常,例如OutOfMemoryException
或StackOverflowException
。
Microsoft在此處提供了有關最佳實踐的有用文章: 處理異常的最佳實踐
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.