麒麟.NET
随笔 - 8 文章 - 0 评论 - 111
博客园
首页
新随笔
联系
管理
订阅
类型初始值设定项引发异常
上午打开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时就抛出了这个异常。
总结:
如果类中存在静态成员,应确保其初始化时不会抛出异常,否则会影响对该类的正常访问。
posted on 2007-11-07 11:04
麒麟.NET
阅读(1730)
评论(1)
编辑
收藏
所属分类:
C#
、
日积月累
发表评论
回复
引用
查看
2008-03-18 17:04 |
老钱
我也遇见,谢谢提醒
社区
新闻
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-11-07 11:15 编辑过
另存
打印
最新IT新闻:
·
《福布斯》:暴雪的新一波完美风暴已经到来
·
中国互联网公司在哪儿
·
微软:Silverlight内容也可被搜索引擎检索
·
内置AI技术 三星聪明微波炉还能上网
·
盛大设文学公司 原新浪博客负责人侯小强任CEO
博客园新闻频道
博客园首页
社区
公告
学海无涯 学无止境
我的最新闪存
今天好像提交留言都有问题啊,无论是小组还是博问
7-3 16:59
<
2008年3月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
与我联系
发短消息
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(7)
给我留言
查看留言
我参加的小组
生活杂谈
ASP.NET
读书(Books)
.NET 3.x
08欧锦赛
Web技术联盟
北京.NET俱乐部博客园小组
WinForms
NBA
ASP.NET AJAX
我参与的团队
北京.NET俱乐部(0/1277)
ASP.NET AJAX (Atlas)学习(0/1306)
我的标签
ASP.NET MVC Framework(3)
ASP.NET 3.5(3)
ASP.NET 3.5 Extensions(3)
LINQ(3)
.NET(1)
好书推荐(1)
随笔分类
(18)
ASP.NET(3)
C#(1)
LINQ(3)
MVC(3)
Other(3)
翻译(3)
日积月累(2)
随笔档案
(8)
2008年5月 (1)
2008年3月 (2)
2008年2月 (1)
2008年1月 (2)
2007年12月 (1)
2007年11月 (1)
My Blogs
麒麟.Life
麒麟.Sports
麒麟.Typesetter
最新随笔
1. ORA-01861: 文字与格式字符串不匹配
2. .NET技术书籍推荐
3. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 3
4. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 2
5. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 1
6. 2008年要做的十件事
7. 我的2007
8. 类型初始值设定项引发异常
搜索
积分与排名
积分 - 24219
排名 - 1548
最新评论
1. re: .NET技术书籍推荐
mark
--求知无傲
阅读排行榜
1. .NET技术书籍推荐(4015)
2. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 1(2178)
3. 类型初始值设定项引发异常(1730)
4. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 3(1588)
5. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 2(1534)
评论排行榜
1. .NET技术书籍推荐(42)
2. 我的2007(27)
3. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 1(17)
4. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 2(17)
5. 2008年要做的十件事(4)