2012-12-28 28 views
10

作爲編程新手,我只是發現您可以專門捕捉某些類型的錯誤,並將代碼綁定到該類型的錯誤。具體使用Try/Catch

我一直在研究這個問題,我不太瞭解這個語法,例如

catch (InvalidCastException e) 
{ 
} 

我明白InvalidCastException被處理錯誤的類型,但我不確定什麼e是。

有人能解釋一下嗎?

+2

只需在該catch塊中設置一個斷點並在調試器中查看'e'即可! –

+1

更好地看看MSDN異常類 - http://msdn.microsoft.com/en-us/library/system.exception%28v=vs.71%29.aspx – MethodMan

+5

雖然這個問題並沒有顯示一個完整的*研究努力,它*對許多人來說是一個非常明確和有用的問題,所以我建議不要暈倒。 – Adam

回答

16

e是保存特定於該例外的數據的對象。如果您查看不同類型的異常,您會看到它們都有不同類型的數據。許多人不這樣做,但很多人不這樣做,當他們這樣做時,他們可以幫助您確切地確定發生的事情,而不是僅僅獲得一般性錯誤。

例如,NotFiniteNumberException定義了一個名爲OffendingNumber一個附加屬性是不存在於正常Exception對象......這然後提供你可能需要弄清楚到底發生了什麼額外的數據。

2

e是一個變量名。它可以是任何您想要命名的名稱,例如exception

5

'e'只是變量名稱,如果您發現易於閱讀,則可以將其稱爲'ex''exception'。但'e'只是一個慣例,像'我'在for i = 0...構造

6

"e"只是你決定調用異常。就像你會做

string name = "..."; 

int total = 8; 

其中string在這個例子中int是數據類型,(在你的情況下,數據類型是InvalidCastException),而「name」和「total」是變量名稱,在你的情況下,它只是「e」。

3

e是對異常對象的引用,它存儲捕獲到的異常的詳細信息。詳細內容可包括例外Message,一個InnerException對象等

2

e是持有例外所以現在你可以做這樣的事情e.message和這樣

19

變量假設沒有e。你將如何獲得例外信息?

名稱e(或任何其他名稱)在那裏讓您獲取異常對象的句柄,以便您可以從中提取信息。

它是合法的語法不給任何名稱:

catch (InvalidCastException) //legal C# 

這工作,但你無法知道什麼對,除了它的類型錯誤。

+5

+1對於很好的解釋 –

+0

哇,我不知道你可以聲明一個沒有變量的catch ...我會立即開始亂丟我的代碼。 :-P –

4

eInvalidCastException的實例被放入的變量。然後,您可以查看該對象的屬性,以幫助您準確瞭解導致try塊中代碼拋出錯誤的原因。

2

e是InvalidCastException類型的實例。在catch塊中,你可以例如說Debug.Write(e.ToString())。

4

「InvalidCastException」是類型,e是此類型的對象。與對象 ,你可以調用它的成員函數。例如

catch (InvalidCastException e) { 
    ... 
    e.printErrorMessage(); 
    ... 
}