作爲編程新手,我只是發現您可以專門捕捉某些類型的錯誤,並將代碼綁定到該類型的錯誤。具體使用Try/Catch
我一直在研究這個問題,我不太瞭解這個語法,例如
catch (InvalidCastException e)
{
}
我明白InvalidCastException
被處理錯誤的類型,但我不確定什麼e
是。
有人能解釋一下嗎?
作爲編程新手,我只是發現您可以專門捕捉某些類型的錯誤,並將代碼綁定到該類型的錯誤。具體使用Try/Catch
我一直在研究這個問題,我不太瞭解這個語法,例如
catch (InvalidCastException e)
{
}
我明白InvalidCastException
被處理錯誤的類型,但我不確定什麼e
是。
有人能解釋一下嗎?
e
是保存特定於該例外的數據的對象。如果您查看不同類型的異常,您會看到它們都有不同類型的數據。許多人不這樣做,但很多人不這樣做,當他們這樣做時,他們可以幫助您確切地確定發生的事情,而不是僅僅獲得一般性錯誤。
例如,NotFiniteNumberException
定義了一個名爲OffendingNumber
一個附加屬性是不存在於正常Exception
對象......這然後提供你可能需要弄清楚到底發生了什麼額外的數據。
e
是一個變量名。它可以是任何您想要命名的名稱,例如exception
。
'e'
只是變量名稱,如果您發現易於閱讀,則可以將其稱爲'ex'
或'exception'
。但'e'
只是一個慣例,像'我'在for i = 0...
構造
"e"
只是你決定調用異常。就像你會做
string name = "...";
或
int total = 8;
其中string
在這個例子中int
是數據類型,(在你的情況下,數據類型是InvalidCastException
),而「name
」和「total
」是變量名稱,在你的情況下,它只是「e
」。
e
是對異常對象的引用,它存儲捕獲到的異常的詳細信息。詳細內容可包括例外Message
,一個InnerException
對象等
e
是持有例外所以現在你可以做這樣的事情e.message
和這樣
變量假設沒有e
。你將如何獲得例外信息?
名稱e
(或任何其他名稱)在那裏讓您獲取異常對象的句柄,以便您可以從中提取信息。
它是合法的語法不給任何名稱:
catch (InvalidCastException) //legal C#
這工作,但你無法知道什麼對,除了它的類型錯誤。
+1對於很好的解釋 –
哇,我不知道你可以聲明一個沒有變量的catch ...我會立即開始亂丟我的代碼。 :-P –
e
是InvalidCastException
的實例被放入的變量。然後,您可以查看該對象的屬性,以幫助您準確瞭解導致try
塊中代碼拋出錯誤的原因。
e是InvalidCastException類型的實例。在catch塊中,你可以例如說Debug.Write(e.ToString())。
「InvalidCastException」是類型,e是此類型的對象。與對象 ,你可以調用它的成員函數。例如
catch (InvalidCastException e) {
...
e.printErrorMessage();
...
}
只需在該catch塊中設置一個斷點並在調試器中查看'e'即可! –
更好地看看MSDN異常類 - http://msdn.microsoft.com/en-us/library/system.exception%28v=vs.71%29.aspx – MethodMan
雖然這個問題並沒有顯示一個完整的*研究努力,它*對許多人來說是一個非常明確和有用的問題,所以我建議不要暈倒。 – Adam