열심히 구조개선을 하고서 깃허브에 푸시한 후, 업로드된 코드를 살펴보고 있었다.
오늘은 12시간 정도 컴퓨터를 붙들고 있었기에, 슬슬 체력도 한계에 다다를 쯤이었다.
갑자기 불길한 예감이 들며 눈길이 꽂힌 코드가 있었다.
하지만 난 한눈에 문제점을 파악할 수 없는 초짜이므로, 우선 실행부터 해보았다.
처음엔 진짜 어디서 어떻게 접근해야 할지 감이 안 잡혔다.
그냥 무작정 NullPorinterException에 대해 구글링하면서 여러 포스팅을 훑어봤지만 아무 소용이 없던 그 때,
코난에서만 보던, '파칭!' 하면서 뇌리를 스치는 그 느낌이 왔다.
1. break point를 보면 분명 memberRow에서 value를 get하는 도중에 발생한 것이다.
2. 애초에 memberRow의 value들이 null인 경우가 있을텐데, 그 상태로 Member 객체로 생성하면 null로써 변환되지 않을 듯한 느낌이었다(해시맵이 너무 어려워서 이론적으로 정확히는 모르겠다ㅠ).
3. 아무튼 애초에 memberRow.isEmpty() 가 true라면 get을 하지 않고 null을 반환하게끔 하고, 아닐 경우에만 Member 객체에 담으면 어떨까 싶었다.
솔직히 원리적으로 풀어서 원인을 파악하고 해결방안을 모색하는 그런 플레이는 하지 못 했다.
하지만 내 육감으로라도 풀어냈으니 뿌듯한 건 사실이다.
코난이 왜 그렇게 살인사건 풀이에 중독이 됐는지 알 거 같다.
나중에 또 NPE를 접했을 때에는 좀 더 고수처럼 해결할 수 있도록 열심히 공부해야겠다.
자주 쓰이는 정규식 모음 (0) | 2022.03.04 |
---|---|
스프링 부트 게시판 좋아요/싫어요 기능 구현하기(ajax) (0) | 2021.12.06 |
JAVA Exception 종류 (0) | 2021.08.08 |