麒麟.NET
随笔 - 8 文章 - 0 评论 - 110
博客园
首页
新随笔
联系
管理
订阅
类型初始值设定项引发异常
上午打开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
阅读(1443)
评论(1)
编辑
收藏
所属分类:
C#
、
日积月累
发表评论
回复
引用
查看
2008-03-18 17:04 |
老钱
我也遇见,谢谢提醒
新用户注册
刷新评论列表
标题
姓名
主页
Email
(只有博主才能看到)
验证码
*
看不清,换一张
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2007-11-07 11:15 编辑过
博客园首页
社区
公告
学海无涯 学无止境
我的最新闪存
好久没来了啊!
4-29 10:26
<
2007年11月
>
日
一
二
三
四
五
六
28
29
30
31
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
1
2
3
4
5
6
7
8
与我互动
给我发短消息
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
(6)
给我留言
查看留言
我参加的小组
.NET 3.x
ASP.NET
08欧锦赛
Web技术联盟
读书(Books)
WinForms
NBA
英语听力
CLR基础研究小组
OOAD&UML
我参与的团队
北京.NET俱乐部(0/1097)
ASP.NET AJAX (Atlas)学习(1/1236)
我的标签
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. 类型初始值设定项引发异常
搜索
积分与排名
积分 - 22984
排名 - 1513
最新评论
1. re: .NET技术书籍推荐
提供详细的电子书下载地址
--电子书下载地址
2. re: .NET技术书籍推荐
敏捷软件开发:原则、模式与实践
看完此书后, 让人感觉无比爽, 就像黑夜中的明灯, 它的设计方式已经运用到我平时的开发工作, "很好, 很强大"
--liangzhimy
3. re: .NET技术书籍推荐
--引用-------------------------------------------------- 81: 《Java与模式》不错。 ----------------------------...
--liangzhimy
4. re: .NET技术书籍推荐
看过几本,觉得第一本是最有用的,觉得C#高级编程也挺经典的
--LeoS
5. re: .NET技术书籍推荐
大家好啊,我现在上大四,目前在公司实习,感觉学校学的与工作中用到的并不多, 望各位高手多多介绍几本实用书,我想从基础学起,再看楼主介绍的10本书. 还有AJAX,JAVASCRIPT书籍. ...
--小园子
阅读排行榜
1. .NET技术书籍推荐(3867)
2. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 1(2091)
3. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 3(1548)
4. 我的2007(1522)
5. 【翻译】Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 2(1511)
评论排行榜
1. .NET技术书籍推荐(41)
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)