2012-11-26 37 views
-2

我不知道CSC編譯器用TRY-CATCH塊做了什麼。例如,編譯器將如何處理下面的代碼?
在編譯爲MSIL之前,編譯器是否將基本代碼更改爲其他形式的C#代碼?我可以預覽此代碼嗎?編譯器的規則與TRY-CATCH塊一起工作是什麼?編譯器使用try-catch塊做什麼

try 
{ 
    int x =45; 
    var obj = new MyObject(++x); 
    obj.MyMethod(1234, "qwerty"); 
    short result = x/obj.Function(x); 
} 
catch(Exception ex) 
{ 
    Console.Writeline(@"Something goes wrong :/"); 
} 
+5

你嘗試編譯代碼,然後使用ildasm嗎?請閱讀http://tinyurl.com/so-list –

+0

@DaveZych:修正,謝謝。 –

+0

ildasm.exe將顯示我的MSIL代碼,我希望看到編譯器如何更改此代碼 – Jacek

回答

1

嘗試 - 美中不足的是這是在編譯時全面分析,因此不會有在運行大的影響的概念。

請結帳這個link。它一定會幫助你。

3

在這裏看到:http://weblogs.asp.net/kennykerr/archive/2004/09/15/230167.aspx

,因爲它在源代碼中做一個try-catch塊實際上在IL看起來非常相似。到IL的內容取決於您在源代碼中指定的內容;有一對夫婦的結構,如.fault(就像finally但只執行,如果一個異常被拋出),有沒有C#/ VB相當,但編譯器仍然可以識別的「共同」的錯誤處理代碼行,並把它們在一個單獨的.fault區塊中。

相關問題