我想知道 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 是一个完全在编译时分析的概念,因此不会对运行时产生太大影响。
请查看此链接。它一定会对你有所帮助。