思考一个问题,以下代码是一个简单的饿汉式单例代码,显然在第一次初始化的时候会发生错误,导致单例的实例化失败,那么失败后可否继续尝试实例化呢?还是说下次使用时直接返回错误的对象或异常呢?
环境HotSpotJVM 1.6
/**
*
* @author lidongbo
* @date 2012-7-11
*/
public class Foo {
private static final Foo foo = new Foo();
private static int count = 0;
private Foo(){
init();
}
private void init(){
//do sth.
if(count == 0){
//制造一个空指针
System.out.println(foo.hashCode());
}else{
System.out.println("实例化成功!");
}
count++;
}
public static final Foo getInstance(){
return foo;
}
}
/**
*
* @author lidongbo
* @date 2012-7-11
*/
public class Test {
public static void main(String[] args) {
try {
System.out.println(Foo.getInstance());
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("-------------1-----------------");
try {
System.out.println(Foo.getInstance());
} catch (Throwable e) {
e.printStackTrace();
}
System.out.println("-------------2-----------------");
}
}
答案揭晓:
再第二此实例的时候,JVM直接异常给我们了.
java.lang.ExceptionInInitializerError
at Test.main(Test.java:13)
Caused by: java.lang.NullPointerException
at Foo.init(Foo.java:19)
at Foo.<init>(Foo.java:12)
at Foo.<clinit>(Foo.java:9)
... 1 more
java.lang.NoClassDefFoundError: Could not initialize class Foo
at Test.main(Test.java:19)
-------------1-----------------
-------------2-----------------
分享到:
相关推荐
组态王设备初始化失败时,安装此控件通常就能立马解决问题。
主要介绍了微信小程序首页数据初始化失败的解决方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
Win10关于易语言提示运行时出错初始化DirectX运行库失败问题的解决,Win10关于易语言提示运行时出错初始化DirectX运行库失败问题的解决
vs开发工具错误提示:ActiveSync 引导程序初始化失败。请连接/配备一个实际的设备,或者从 http://go.microsoft.com/fwlink?linkid=67763 下载用户级 Windows Mobile Device Center 应用程序 Device Connectivity ...
创建新工程失败的解决办法,此办法限仅于解决“创建新工程失败”
爱数-超易备 备份策略提示COM初始化失败:没有注册类 当爱数-超易备服务器,设置备份策略时,提示以下错示 可先使用使用手册的方法,如下: 当问题没解决时,请安装以下...安装完成后,就可以选择SQL Server数据库了
nginx-init-ubuntu, 尝试和 true Nginx 初始化脚本得到增强 发送请求? ! nginx-init-ubuntu状态 当前版本:v3.9.0以前稳定版本 v3.8.0注意:v3.8.0在最近几个月一直稳定,没有问题。 v3.9.0稳定,是新的。电子邮件...
VS200X应用程序初始化失败的解决方法
Windows server 2003 服务器,突然不能正常登录,提示服务器启动时报错:安全帐户管理器初始化失败,目录服务无法启动点“确定”,服务器就自动重启,无法进入桌面,安全模式也进入不了,只能进入目录服务还原模式
更新了一个有关windows 7的补丁后,虚拟机运行脚本的时候就出现了socket端口初始化失败问题,下载后双击即可解决
深入分析java单例模式什么是单例模式单例模式的常见写法一、饿汉式单例优点缺点示例二、懒汉式单例示例1(普通写法)示例2(synchronized写法)示例3(DCL写法)示例4(内部类写法)三、注册式单例示例1(容器式)示例2(枚举式...
应用程序正常初始化失败的解决方法.docx
一、单例模式的介绍 二、单例模式的特点 三、单例模式的应用 四、单例模式使用的注意 五、单例模式的举例
应用程序初始化失败怎么办?.docx
交互式登录进程初始化失败解决方法.docx
TIA博途中如何设置不需要初始化DB块也可以进行下载?
Vista开机蓝屏或提示-登录进程初始化失败-怎么办.docx
答案是既有编译时,也可能会有运行时(seriously), 从语言的层面来说,全局变量的初始化可以认为分成以下两个阶段(c++11 N3690 3.6.2): static initialization: 静态初始化指的是用常量来对变量进行初始化,...
配置系统未能初始化 错误的解决方案 配置系统未能初始化 错误的解决方案