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
}
}
}
答案 0 :(得分:3)
嗯,这意味着它所说的内容 - RMDC.clsVariables
的类型初始化程序(这是一个非传统的名称,顺便说一句)中的某些东西爆炸了。
这可能是一个静态变量初始值设定项:
static int foo = GetInitialValueForFoo();
或静态构造函数:
static clsVariables
{
DoSomething();
}
无论是什么,它都失败了,让你的类型无法使用。
如果您在调试器中运行代码,它应该在抛出异常时立即中断,从而更容易弄清楚正在发生的事情。
答案 1 :(得分:3)
您必须查看异常的InnerException以找到引发TypeInitializationException的原因。如果没有这些信息,就无法猜出是什么问题。
生成错误日志的代码需要做一些工作,以便它也不会忘记显示内部异常。如果您使用Exception.ToString()方法,这是自动的。如有必要,为AppDomain.CurrentDomain.UnhandledException实现事件处理程序,记录e.ExceptionObject.ToString()的值。