有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java使单例模式代码更强大

public class SingletonDoubleCheckedLock {
    private volatile static SingletonDoubleCheckedLock uniqueInstance;

    private SingletonDoubleCheckedLock() {
    }

    public static SingletonDoubleCheckedLock getInstance() {
            if (uniqueInstance == null) {
                    synchronized (SingletonDoubleCheckedLock.class) {
                            if (uniqueInstance == null) {
                                    uniqueInstance = new SingletonDoubleCheckedLock();
                            }
                    }
            }
            return uniqueInstance;
    }
}

如果在运行getInstance()方法时发生任何错误(例如,在执行new SingletonDoubleCheckedLock()但内存不足时),并且我仍然希望getInstance()方法返回正确的结果。如何做到这一点


共 (1) 个答案

  1. # 1 楼答案

    问题:“如果在运行getInstance()方法时出现任何错误……我仍然希望getInstance()方法返回正确的结果。如何实现这一点?”

    简单回答:你不能保证

    有大量的条件可以抛出Throwable

    有两种主要类型(子类)ThrowableExceptionError

    Exception用于指示应用程序中可能出现的阻止正常执行流的情况,应用程序可能会在继续之前捕获并纠正该情况。最终必须捕获某些形式的异常(已检查的异常)

    Error用于指示应用程序无法恢复的严重异常状况,其原因可能超出应用程序的控制范围。你可以捕捉到一个错误,但这没有多大意义,因为情况可能无法恢复

    如您所见,如果getInstance()抛出错误,那么在应用程序运行时,您将无能为力。只有在发生异常时,你才有机会恢复