[TIL] Today I Learned - 221123

2022. 11. 23. 22:08기록/TIL

[TIL] Today I Learned - 221123

 

221123 기록

 

Java throw exception

 

private Memo getMemo(int memoNumber) {
    for (Memo memo : this.memoList) {
        if (memoNumber == memo.getNumber()) {
            return memo;
        }
    }
    throw new RuntimeException("MemoList data 타입 확인필요");
}

이전까진 RuntimeException같은 항목을 왜 사용하는지 잘 몰랐었다. 오류가 생기면 ide에서 해당 항목에서 어느 부분에 오류가 생겼는지 알려주는데 필요가 있나 싶었던 것이었다. 다만 오늘 사용하던 메서드들 위와 같이 변경을 하면서 튜터님께서 'throw new 오류'로 사용하는 것을 보면서 알 수 있었다. 

위의 for문을 돌면서 만약 메서드가 return되지 않으면 해당 오류를 반환하기로 하는데 해당 항목을 작성한 후 오류가 발생한 콘솔 창이다. 콘솔창을 보면 해당 오류가 왜 생겼는지 좀 더 직관적으로 알 수 있었다. 이런 점에서 오류가 발생한 부분이 왜 생기는지 혹은 어떤 항목에서 오류가 생기는지 알 수 있었기에 해당 과정처럼 오류를 정리하는 법을 알았다.

오류의 경우 자바에서 발생할만한 오류를 종합해놨기에 오류가 발생할만한 지점에 발생할 만한 오류를 지정해주는 것이 포인트란 것을 알았다.

 

public Memo validation(int memoNumber) {
    if (0 <= memoNumber && memoNumber <= this.memoList.size()) {
        return getMemo(memoNumber);
    }
    throw new IllegalArgumentException();
}

private Memo getMemo(int memoNumber) {
    for (Memo memo : this.memoList) {
        if (memoNumber == memo.getNumber()) {
            return memo;
        }
    }
    throw new RuntimeException("MemoList data 타입 확인필요");
}

기존의 경우 해당 메서드 두개가 합쳐져있었다. 그러나 튜터님께 여쭤보면서 튜터님은 하나의 메서드에 책임이 두개가 몰려있으니 메서드를 추출하자고 하셨고 해당부분에서 메서드를 추출하여 solid의 부분을 생각하게 되었다. 그리고 이 지점에서 하나의 책임만 가지게 한다는 것이 이런 의미란 것을 깨달았다.

 

 

'기록 > TIL' 카테고리의 다른 글

[TIL] Today I Learned - 221125  (0) 2022.11.26
[TIL] Today I Learned - 221124  (0) 2022.11.24
[TIL] Today I Learned - 221122  (0) 2022.11.22
[TIL] Today I Learned - 221121  (0) 2022.11.21
[TIL] Today I Learned - 221118  (0) 2022.11.18