-2

我想知道 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 :/");
}
4

3 回答 3

3

看看这篇文章的详细信息:

编译器内部结构 - Microsoft 编译器如何解释 Try/Catch/Throw

于 2012-11-26T18:41:38.043 回答
3

见这里:http ://weblogs.asp.net/kennykerr/archive/2004/09/15/230167.aspx

在 IL 中,try-catch 块实际上看起来与在源代码中非常相似。IL 的具体内容取决于您在源代码中指定的内容;有几个构造,例如.fault(类似于finally但仅在抛出异常时执行),它们没有 C#/VB 等效项,但编译器仍然可以识别“常见”错误处理代码的行并将它们放入单.fault块。

于 2012-11-26T18:42:50.047 回答
1

try-catch 是一个在编译时完全分析的概念,因此在运行时不会产生太大影响。

请查看此链接。它肯定会帮助你。

于 2012-11-26T18:42:01.250 回答