성장일기 (22.05.04)

Joo's Life·2022년 5월 4일
0

성장일기

목록 보기
1/1

학습

실패하는 테스트 케이스 통과 시키기

  • 기대한 건 java.util.concurrent.TimeoutException 예외였는데 실제로는 java.util.concurrent.ExecutionException 일 발생했다. 왜 그런거지?
    Assertions.assertThatExceptionOfType(TimeoutException.class)
						.isThrownBy(() -> connectionFuture.get(2000, TimeUnit.MILLISECONDS));
  • java.util.concurrent.Future 클래스의 get() 메서드는 비동기적인 태스크 실행 중 던져진 예외를 다시 던져주는 역할을 하는구나!
  • 사용자가 요청한 시간 동안 연결을 재시도하는 캡슐화된 모듈을 개발한다면 하나의 연결 실패에 대한 예외는 내부적으로 처리하고 최종 결과를 던져주게 해야 하는구나.
public Future<Boolean> connectUntilSuccess(String ip, int port, long timeoutMillis, long intervalMills) {
    return executeUntilSuccess.begin(() -> {
        try {
            return connectOnce0(ip, port);
        } catch (InterruptedException | ExecutionException e) {
            return false;
        }
    }, timeoutMillis, intervalMills);
}

Checked Exception

  • Checked Exception - The Exception class is the superclass of checked exceptions

회고

  • 매일 학습하고 성장해 나가는 일이 즐겁고 지나치게 부담되지 않아야 한다. (어느 정도의 부담감은 건강한 것 같다) 어떤 목표에 도달하기 위해 무작정 인내하는 것 말고 과정이 즐겁고 결과는 하나님께 맡기는 그런 일이고 싶다.
  • 어제 아침에 늦어서 작성하던 코드를 정리하지 못하고 여러가지 코드가 섞인 backup 커밋을 하고 회사로 갔다. (그러고 보니 왜 여러가지가 섞인 코드가 커밋되지 않은채 함께 있었지?) 오늘 다시 책상에 앉아 backup 커밋을 soft reset 하고 코드를 하나하나 복기해 보니 어제 내가 무엇을 하다가 책상을 떠낫는지 알게 된다. 브레인덤프라는 이름으로 자리를 떠나며 기록을 남기곤 하는데 바빠서 그러지 못했지만 코드 자체가 브레인 덤프가 되는 경험을 한다.
  • 사업으로 작성한 코드를 외부에 공유하기 위해 혼자 조용히 타이핑을 해보고 있다. 놀라운건 굉장히 기본적인 것들에 대해 제대로 된 이해 없이 그냥 샘플 코드 보고 따라 개발한 것이 꽤 있다는 사실이다. java.concurrent.Future 클래스의 get() 메서드가 비동기적인 실행중 발생한 예외를 던진다는 것을 모르고 사용하고 있었고, InetSocketAddress 클래스의 IP 를 가져오는 메서드의 명세도 정확하게 이해하지 못하고 그냥 쓰고 있었다.
  • 함수의 부수효과에 대해 생각하고 주석에 기록한 것 잘한 것 같아.

Next

  • Channel 클래스의 close() vs disconnect() 차이 글로 이해한 것 작성하기
  • 클라이언트의 연결을 대기할 수 있는 인터페이스 구현하기

참조

0개의 댓글