惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 【当耐特】
Help Net Security
Help Net Security
P
Proofpoint News Feed
J
Java Code Geeks
爱范儿
爱范儿
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Full Disclosure
Google DeepMind News
Google DeepMind News
H
Help Net Security
G
Google Developers Blog
Jina AI
Jina AI
Vercel News
Vercel News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
Lohrmann on Cybersecurity
S
Schneier on Security
Microsoft Azure Blog
Microsoft Azure Blog
IT之家
IT之家
Security Archives - TechRepublic
Security Archives - TechRepublic
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic
GbyAI
GbyAI
B
Blog
O
OpenAI News
博客园_首页
Cisco Talos Blog
Cisco Talos Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News: Ask HN
Hacker News: Ask HN
TaoSecurity Blog
TaoSecurity Blog
腾讯CDC
MongoDB | Blog
MongoDB | Blog
M
MIT News - Artificial intelligence
C
Cybersecurity and Infrastructure Security Agency CISA
Cyberwarzone
Cyberwarzone
Webroot Blog
Webroot Blog
Simon Willison's Weblog
Simon Willison's Weblog
Y
Y Combinator Blog
C
Cisco Blogs
A
Arctic Wolf
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
AI
AI
W
WeLiveSecurity
aimingoo的专栏
aimingoo的专栏
The Register - Security
The Register - Security
Project Zero
Project Zero
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale

博客园 - Roamman

RRAS Access一些问题 临时表的一个用法 ConnectionString Microsoft SQL Server 错误代号: 15535 解决方法 百度也开源 位运算 之(1) 按位与(AND)& 操作 托管调试助手报错 js 的开发效率 window.showModalDialog 以及window.open用法简介 Emterprise Library 学习地址 Web 开发与设计之 Google 兵器谱 Web 开发与设计之 Google 兵器谱 Web 开发与设计之 Google 兵器谱 Web 开发与设计之 Google 兵器谱 Web 开发与设计之 Google 兵器谱 Jquery Ajax时 error处理 之 parsererror jQuery Widget 开发指南 jQuery工作原理解析以及源代码示例
类型初始值设定项引发异常
Roamman · 2010-07-02 · via 博客园 - Roamman

-上午打开VS编译程序的时候,突然出现了这个运行时错误“类型初始值设定项引发异常”。昨天还没有这个错误呢,今天就突然出现,搞得我一头雾水。上网搜了一下,发现有很多人遇到了这个问题。经过一番折腾解决了这个问题后,发现很多人都没有意识到其症结所在,于是写这个随笔,给大家点启发,也给自己做个备忘。
症状描述:
我的程序需要连接一台MQ服务器(其实就是个台式机,每天下班关机),如果服务器没有开,程序就会抛出异常。以前编译时老是忘开服务器,经常会出现MQ访问失败的异常。这次我原本以为也是这个异常,没想到出来的是“类型初始值设定项引发异常”。
今天的错误为什么会和以往不一样呢?昨天临下班时,把一个类的单件模式做了重构,使用了静态初始化方法。代码如下:

private static readonly WorkerManager instance = new WorkerManager();
static WorkerManager() { }
private WorkerManager()
{
    Initialize();
}
public static WorkerManager Instance
{
get { return instance; }
}

访问MQ的语句在Initialize方法里,问题就应该出现在这里了。
解决方法:
当然,把MQ服务器打开问题就解决了,但是究竟为什么会出现“类型初始值设定项引发异常” 呢?
原来类的静态成员在初始化时如果出现异常,访问类的其它静态成员或对该类进行初始化都会抛出这个异常。请看下面的代码:

public class Test
{
public static Foo Test1 = new Foo();
public static string Test2 = "Test2";
public string Test3 = "Test3";
public Test() { }
    }

public class Foo
{
public Foo()
{
throw new Exception();
        }
    }

在访问Test.Test2以及new Test()时都会抛出这个异常。我的代码中,由于Initialize()出现异常,instance实例化失败,所以访问Instance时就抛出了这个异常。
总结:

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

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

Code
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