簡體   English   中英

編譯器用 try-catch 塊做什么

[英]What compiler make with try-catch block

我想知道 CSC 編譯器用 TRY-CATCH 塊做了什么。 例如,編譯器將如何處理如下代碼?
在編譯為 MSIL 之前,編譯器是否會將基本代碼更改為其他形式的 C# 代碼? 我可以預覽此代碼嗎? 使用 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 :/");
}

見這里:http ://weblogs.asp.net/kennykerr/archive/2004/09/15/230167.aspx

try-catch 塊實際上在 IL 中看起來與在源代碼中非常相似。 IL 的具體內容取決於您在源代碼中指定的內容; 有一些結構,例如.fault (類似於finally但僅在拋出異常時才執行),它們沒有 C#/VB 等效項,但編譯器仍然可以識別“常見”錯誤處理代碼行並放入它們在單個.fault塊中。

try - catch 是一個在編譯時完全分析的概念,因此在運行時不會產生太大影響。

請查看此鏈接 它肯定會幫助你。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM