inflearn logo
강의

Course

Instructor

GoF's Design Patterns Learned Through Coding

Singleton Pattern Part 4 - How to implement it safely and simply

싱글톤 (Singleton) 패턴 구현 방법 3 - 2번 퀴즈에 대해 질문이 있습니다.

Resolved

568

ddkds66

1 asked

0

안녕하세요 백기선님, 강의 들으면서 많이 배우고 있습니다.

싱글톤 (Singleton) 패턴 구현 방법 3
- 2. 만약에 생성자에서 checked 예외를 던진다면 이 코드를 어떻게 변경해야 할까요?

위 퀴즈에 대해 질문이 하나 있습니다.

static 필드의 초기화 혹은 static block에서 exception이 발생하면 ExceptionInInitializerError가 발생하는 것으로 알고 있습니다.

인터넷에서 많은 사람들이 위 퀴즈에 대해 '생성자에서, 혹은 static block에서 try/catch하여 checked exception을 RuntimeException으로 변환해준다' 라고 설명을 하는데, static eager initialization를 사용하는 구조에서는 unckecked, checked 등 exception의 종류와 관계 없이 모두 ExceptionInInitializerError 이 발생하지 않나요?

그리고 static eager initialization 과정에서 exception이 발생하여 싱글턴 인스턴스가 null이 되어버리는 경우, Spring에서의 BeanCreationException과 같이 서버가 뜨면 안되는 상황이 아닐까 생각이 됩니다.

제가 잘못 파악하고 있거나 놓친 부분이 있다면 가르침 부탁드립니다.

java 디자인-패턴

Answer 2

0

ddkds66

올려주신 pdf 강의자료 6페이지에 있습니다~!

private static final Settings INSTANCE = new Settings();
private Settings() {}

public static Settings getInstance() {
 return INSTANCE;
}

다음을 직접 설명해 보세요.
1. 이른 초기화가 단점이 될 수도 있는 이유?
2. 만약에 생성자에서 checked 예외를 던진다면 이 코드를 어떻게 변경해야 할까요?

1

whiteship

답이 늦어서 죄송합니다.

static 초기화 블럭에서 발생하는 예외를 잡아서 ExceptionInInitializerError로 바꿔서 던지는게 제가 의도했던 답입니다.

그리고 ExceptionInInitializerError가 그런 용도 이기도 하구요.
https://docs.oracle.com/javase/8/docs/api/java/lang/ExceptionInInitializerError.html

두번째 질문도 그렇고 말씀하신게 다 맞는 것 같습니다.

0

ddkds66

넵 답변 감사합니다 기선님 🙇 의문이 명쾌히 해결됐습니다

0

whiteship

어느 수업 몇 분 쯤에 나오는 퀴즈인지 알려주실 수 있으실까요? 저도 오래전에 만든거라 어디서 언급했는지 기억이 나질 않네요.

많이 사용되는 패턴의 순서를 정한다면 어떤 순서일까요?

0

110

1

@Builder에 대해 사소한 질문

0

52

1

default 기능이 있는 interface와 추상클래스의 차이

0

49

1

실무 코드에 디자인 패턴 적용 시의 '기준'에 대해 조언을 얻고 싶습니다.

0

42

1

데코레이터 패턴, before 가 O(2^n) 인 이유

0

42

0

혹시 다음강의는 언제쯤..

0

346

1

volatile 사용 이유에 대해서 여쭤보고 싶습니다!

0

613

3

Spring Security 의 ProviderManager (AuthenticationManager) 도 옵저버 패턴을 사용하고 있다고 볼 수 있을까요?

0

390

2

싱글톤 패턴을 깨트리는 방법

0

551

1

코드에 약간 오타가 있는거 같습니다.

0

430

1

안녕하세요, 강의 순서 질문드립니다.

0

685

1

스프링 시큐리티 WebSecurityConfigurerAdapter deprecated 대체 코드

0

2429

1

팩토리메소드 = 추상팩토리?

2

922

1

중재자 패턴에 관하여~

0

509

1

undo 메소드 작업중에서

1

365

1

익명클래스로 객체 생성시 의문점

0

583

1

mediator패턴에서 객체끼리 순환참조는 어떻게 해결해야할까요

0

479

1

객체간에 this를 넘기는 부분에 관련해 질문이 있습니다..

1

366

1

전략 패턴과 상태 패턴에 관련해서 질문이 있습니다.

0

281

1

플라이웨이트 패턴 3부에서 HashMap 동시성 질문입니다.

0

254

1

enum 이 이른 초기화 방법이 아니라는 것은,

0

501

1

해당 코드가 C# 에선 접근 관련 컴파일 에러가 뜹니다.

0

430

1

설계관련 궁금증이 있습니다.

0

324

0

설계관련 궁금증이 있습니다.

0

232

0