我使用以下代码创建了应用程序(仅用于研究目的):
using System;
using System.CodeDom;
using System.Linq;
using System.Reflection;
using System.Security.Permissions;
namespace HelloWorld
{
public class Program
{
static Program()
{
throw new Exception("Here we are");
}
static void Main(string[] args)
{
Console.WriteLine("Hello, world!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我希望TypeInitializationException在调用Main()方法之前我会有一个例外,因为静态ctor只能在第一次调用此类的任何成员之前调用一次.因此,在这种情况下,CLR必须为Program类调用静态ctor,然后它必须调用该Main()方法.但这里有一个奇怪的事情:这个异常是从这个引发的Main().但为什么?我们应该从另一个地方获得异常,因为Main不能被调用.
这是异常消息:
未处理的异常:System.TypeInitializationException:'HelloWorld.Program'的类型初始值设定项引发异常.---> System.Exception:这里我们在D:\ research\HelloWorld\Program.cs中的HelloWorld.Program..cctor():第13行---内部异常堆栈跟踪结束--- 在HelloWorld.Program .Main(String [] args)
更新:
我有这个消息.
不幸的是,我无法在此异常后调试应用程序.