zoukankan      html  css  js  c++  java
  • 可遇不可求的Question之类型初始值设定项引发异常篇

    总结在前头:

    “频繁”引发此类异常一般是由于静态方法初始化失败导致的,可以查找代码中的"一次性静态"初始化方法着手排查问题。迅速解决此类异常,可以直接让程序重新初始化,即尝试重启程序。

    TypeInitializationExeption在MSND中的描述为:当类初始值设定项不能初始化类型时,将创建 TypeInitializationException 并向其传递由该类型的类初始值设定项引发的异常引用。

    我们知道,类型初始化或者访问类型的静态成员时,都会对类中的其他静态成员进行初始化,并执行静态构造函数(如果有的话)。在这些过程中如果任一环节出现例如下面的代码:


        class ClassHelper
        {
            
    public static string Field = Do("Initial the static field");
            
    public static string StaticString = "Initaial static string";
            
    public string NonStaticString = "Initial non static string";
            
    public ClassHelper()
            {
                NonStaticString 
    = "Change non static string in instance constructor";
                StaticString 
    = "Change static string in instance constructor";
            }
            
    public static string Do(string field)
            {
                Console.WriteLine(field);
                
    throw new Exception();
                
    return field;
            }
        }

        

    那么产生TypeInitializationException的情况就包含以下几种:

    1. 访问类的某一静态成员,而其他静态成员的初始化(或静态构造函数中)产生异常。例如访问ClassHelper.StaticString,由于静态成员Field的初始化产生异常,因此调用ClassHelper.StaticString会抛出TypeInitializationException。

    2. 访问类的某一静态成员,该静态成员的初始化(或静态构造函数中)产生异常。例如访问ClassHelper.Field。

    3. 对该类进行初始化,而类中的某个静态成员初始化(或静态构造函数中)产生异常。例如ClassHelper helper = new ClassHelper()。

    请参考:http://www.cnblogs.com/kirinboy/archive/2007/11/07/951903.html

  • 相关阅读:
    Nginx配置中运行与启动的详细介绍
    php实现文件上传进度条
    C# 提取逗号分割的字符串
    【sas proc sql】out join
    【SAS NOTE】substr函数
    【sas proc sql】子查询
    【SAS NOTE】数字字符互换
    【SAS NOTE】数组
    【sas Notel】merge
    【sas sql proc】inner join or outer join
  • 原文地址:https://www.cnblogs.com/tigerjacky/p/1858198.html
Copyright © 2011-2022 走看看