Исключение System.TypeInitializationException было обработано - PullRequest
3 голосов
/ 03 марта 2011

Что это означает, когда MS Visual Studio 2005 выдает это сообщение?

"The type initializer for 'RMDC.clsVariables' threw an exception."

Журнал ошибок выглядит следующим образом

System.TypeInitializationException was unhandled
  Message="The type initializer for 'RMDC.clsVariables' threw an exception."
  Source="RMDC"
  TypeName="RMDC.clsVariables"
  StackTrace:
       at RMDC.clsFunctions.getRegistryValue() in D:\Magnus Project\Project Backup\RMDC\RMDC\Class\clsFunctions.cs:line 704
       at RMDC.Program.Main() in ..\RMDC\RMDC\Program.cs:line 39
       at System.AppDomain.nExecuteAssembly(Assembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()

Классс ошибкой в ​​вопросе

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using System.Windows.Forms;
using System.Collections;


namespace RMDC
{
    class clsVariables
    {
        public SqlConnection conn = new SqlConnection();

        public SqlDataAdapter sAdapter = new SqlDataAdapter();
        public DataSet sDataSet = new DataSet();

        public static string sMessageBox = "";
        public static string sUsername;
        public static string sUserFullname;
        public static string sUserLogin;
        public static string sUserType;
        public static int sUserID;
        public static string sServer = "system-10";
        public static string sDatabase = "";
        public static string sDBUserID = "";
        public static string sDBPassword = "";
        public static bool sDontShow = false;
        public static string sCompanyName;
        public static string sContactName;
        public static string sCompanyAddress;
        public static string sPhoneNumber;
        public static string sFaxNumber;
        public static string sEmailAddress;
        public static string sWebAddress;
        public static string sOfficeCd = "01";
        public static int sfiscalYrId = 1;
        public static string sfiscalYr;
        public static DateTime sFiscalStart = DateTime.Today;
        public static DateTime sFiscalEnd = DateTime.Today;
        public static int sRoleId;

        public static byte[] m_barrImg;

        public static SqlConnection cnn = new SqlConnection();

        public OpenFileDialog openIMG = new OpenFileDialog();

        public static NepEngCalanderProvider.NepEngDateClass nepDate = new NepEngCalanderProvider.NepEngDateClass();
        public static NumberToWord.InWordsClass NumericWords = new NumberToWord.InWordsClass();


        public enum QueryType
        {
            Insert,
            Update,
            Delete
        }
    }
}

Ответы [ 2 ]

3 голосов
/ 03 марта 2011

Вам нужно взглянуть на исключение InnerException, чтобы найти причину, по которой возникло исключение TypeInitializationException. Без этой информации невозможно угадать, что не так.

Что бы ни генерировал код в журнале ошибок, нужно немного поработать, чтобы он не забывал отображать и внутреннее исключение. Это происходит автоматически, если вы используете метод Exception.ToString (). Реализуйте обработчик событий для AppDomain.CurrentDomain.UnhandledException, если необходимо, зарегистрируйте значение e.ExceptionObject.ToString ().

3 голосов
/ 03 марта 2011

Ну, это означает, что он сказал - что-то в инициализаторе типа для RMDC.clsVariables (это нетрадиционное название, кстати), взорвалось.

Это может быть инициализатор статической переменной:

static int foo = GetInitialValueForFoo();

или статический конструктор:

static clsVariables
{
    DoSomething();
}

Что бы это ни было, оно не удалось, оставив ваш тип непригодным для использования.

Если вы запустите код в отладчике, он должен взломаться, как только будет сгенерировано исключение, что упростит понимание того, что происходит.

...