JiveJdon Community Forums
在线103人   首页   主题总表   培训咨询   精华   查搜   注册    登陆
首页 » 论坛 » 设计模式、框架和架构
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表
???en_US.forumThreadNext.name??? 下一主题
Go 总共有 4 回复 / 1
 发表新帖子   回复该主题贴
dreamhead

悄悄话
发表文章: 1
注册时间: 2003年04月10日 20:39
Singleton构造函数中抛出异常如何处理? 2003年04月10日 20:51 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
标签列表
我比较喜欢的Singleton方式是
class singleton {
private static singleton instance = new singleton();
private singleton() {
}

public static singleton getInstance() {
return instance;
}
}

OK,问题来了,如果这里的私有构造函数抛出异常该怎么处理?
这种写法肯定就是不行了,我尝试将instance该在static区内初始化,也就是这么写。
private static singleton instance;
static {
try {
instance = new singleton();
} catch (Exception e) {
instance = null;
}
}

static区中内容的执行是在这个加载的时候进行的,但是对于普通的一个应用,我通常只会直接调用getInstance,而并不去考虑这个类初始化时出了什么问题。换句话说,类初始化的异常并没有抛出来,我的程序无法对其进行跟踪。只有当我调用这个类的对象抛出NullPointerException时我才知道,这个类初始化出了问题,前提还是这个类是我写的,我对其运作很清楚。如果拿给别人用,就很难找到其中的问题了。

别告诉我把初始化代码拿出来专门做一个初始化的方法,我最初的代码就是从那里过来的。

百思不得其解,故来向大侠们请教。
banq

悄悄话
发表文章: 9290
注册时间: 2002年08月03日 17:08
Re: Singleton构造函数中抛出异常如何处理? 2003年04月11日 12:56 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
可否这样:


....

public static singleton getInstance() throws Exception {
if (instance == null) throw new Exception
return instance;
}

...



当别人调用getInstance()时 只要就可以catch Exception了
张二狠

悄悄话
发表文章: 10
注册时间: 2003年04月10日 12:50
Re: Singleton构造函数中抛出异常如何处理? 2003年04月11日 16:06 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
产生静态实例那块用工厂,从工厂那里抛例外,结构比较清晰一些
wwlhp@jdon.com

悄悄话
发表文章: 111
注册时间: 2003年06月03日 17:19
Re: Singleton构造函数中抛出异常如何处理? 2003年06月14日 21:07 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
可以使用懒汉式单例

public class Singleton {
private static instance = null;

private Single() throws Exception {
// your code here
}

public static synchronized Singleton getInstance() throws Exception {
if( instance == null ) {
instance = new Singleton();
}
return instance;
}
}



}
wwlhp@jdon.com

悄悄话
发表文章: 111
注册时间: 2003年06月03日 17:19
Re: Singleton构造函数中抛出异常如何处理? 2003年06月14日 21:08 到本帖网址 加入本帖到收藏夹 发送到手机 回复该主题
可以使用懒汉式单例

public class Singleton {
private static instance = null;

private Single() throws Exception {
// your code here
}

public static synchronized Singleton getInstance() throws Exception {
if( instance == null ) {
instance = new Singleton();
}
return instance;
}
}
这个主题有 4 回复 / 1Go
???en_US.forumThreadPrev.name??? 上一主题
  Go back to the topic 返回本主题   Go back to the topic listing返回主题列表    返回页首返回页首
???en_US.forumThreadNext.name??? 下一主题
热点TAG: AOP cache 缓存 DDD EJB 集群 设计模式 Hibernate IOC JiveJdon OO RBAC Seam Spring Struts
google yahoo 新浪ViVi 365Key网摘 天极网摘 CSDN网摘 添加到百度搜藏 POCO网摘 博采网摘
查询本论坛内 回复超过的热门帖子
     回复该主题贴
标题
 
粗体 斜体 下划线 插入图片 插入代码 插入url链接 插入附件
内容
 

手机阅读 add to google add to yahoo
解惑之道在J道 ,打造中国最具影响力的的企业软件社区
OpenSource JIVEJDON v3.0 Powered by JdonFramework Code © 2002-08 jdon.com
anti spam