Я создал приложение со следующим кодом (только для исследовательских целей):
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!");
}
}
}
Я ожидаю, что у меня возникло бы исключение TypeInitializationException
перед вызовом метода Main()
, потому что статический ctor должен вызываться только один раз и непосредственно перед первым вызовом любого члена этого класса.
Итак, в этом случае CLR должен вызвать статический ctor для класса Program, после чего он должен вызвать метод Main()
.
Но вот одна странная вещь: это исключение выбрано из Main()
. Но почему? У нас должно быть исключение из другого места, потому что Main не может быть вызван.
Вот сообщение об ошибке:
Необработанное исключение: System.TypeInitializationException: инициализатор типа для HelloWorld.Program сделал исключение. --- > System.Exception: Здесь мы в HelloWorld.Program..cctor() в D:\research\HelloWorld\Program.cs: строка 13 --- Конец внутренней проверки стека исключений --- в HelloWorld.Program.Main(String [] args)
Update:
У меня есть это сообщение.
К сожалению, я не могу отлаживать приложение после этого исключения.