Système.TypeInitializationException était non gérée
Que signifie MS Visual Studio 2005 génère ce message?
"The type initializer for 'RMDC.clsVariables' threw an exception."
Journal des erreurs est comme suit
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()
La classe avec l'erreur en question
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
}
}
}
Les deux premières lignes de la trace de la pile vous donner de fichiers et les numéros de ligne à étudier. Commencer par là.
Joe Smith: Tout à fait peut-être pas, en fait. Ils vont peut-être en montrant la méthode qui a été appelé causés type d'initialisation. L'OP doit regarder le type réel des initialiseurs.
Ce pourrait être le cas, mais où d'autre pouvez-vous suggérer à quelqu'un démarrer à la recherche avant de poser une question sur?
Joe Smith: Tout à fait peut-être pas, en fait. Ils vont peut-être en montrant la méthode qui a été appelé causés type d'initialisation. L'OP doit regarder le type réel des initialiseurs.
Ce pourrait être le cas, mais où d'autre pouvez-vous suggérer à quelqu'un démarrer à la recherche avant de poser une question sur?
OriginalL'auteur Rabin | 2011-03-03
Vous devez vous connecter pour publier un commentaire.
Eh bien, cela signifie qu'il a dit quelque chose dans l'initialiseur de type pour
RMDC.clsVariables
(qui est un non nom, d'ailleurs) est allé bang.Cela pourrait être une variable statique de l'initialiseur:
ou un constructeur statique:
Quoi qu'il en soit, il n'a pas, en laissant votre type inutilisable.
Si vous exécutez le code dans le débogueur, il devrait casser dès que l'exception est levée, le rendant plus facile de travailler sur l'.
Sans voir le code, il est impossible de dire. Post les initialiseurs statiques et constructeur statique, et qui peut donner un indice. Notez qu'il sera exécuté tous les initialiseurs statiques, pas seulement celui de votre méthode doit utiliser.
J'ai mis à jour avec la classe en question.
C'est beaucoup de variables statiques, dont la plupart se ressemblent, ils ne devraient pas être statique, en premier lieu. Et une variable d'instance de
SqlConnection
et une variable statique du même type? Ick. Je vous suggère de refactoring pour commencer. MonOui. J'ai essayé de débogueur. Je vais essayer de le supprimer et ajouter ces deux dll et voir si je peux essayer de le faire fonctionner à nouveau. À propos de la statique, je n'ai aucune idée de qui a fait toutes ces. Mais oui, il semble y avoir beaucoup de ceux là 🙂
OriginalL'auteur Jon Skeet
Vous avez à regarder à l'exception du InnerException de trouver la raison que la TypeInitializationException eu soulevée. Il est impossible de deviner ce qui ne va pas sans cette information.
Ce que jamais le code généré le journal des erreurs a besoin d'un peu de travail, de sorte qu'il n'oublie pas d'affichage à l'intérieur d'exception. C'est automatique si vous utilisez l'Exception.La méthode ToString (). Mettre en œuvre un gestionnaire d'événement pour le domaine d'application.CurrentDomain.UnhandledException si nécessaire, connectez-vous la valeur de e.ExceptionObject.ToString().
OriginalL'auteur Hans Passant