클린 코드 예외 처리 부분을 보다가 이런 문구를 보게 되었습니다. 정상 흐름을 정의해라. 처음에는 이 말이 무슨 뜻인지 잘 몰랐습니다. 곰곰히 생각해 보니, 이펙티브 자바에서도 비슷한 이야기가 있었는데요. 예외는 예외 상황에서만 사용하라는 것이였습니다. 아래 예제는 너무나도 유명한 예제일 겁니다. 먼저, 길이가 5인 ArrayList를 생성합니다. 그리고 0부터 4까지 넣었습니다. 다음에, 9 ~ 12번째 줄에서, 리스트에 있는 모든 원소를 순회하게 됩니다. 그리고 foo 메서드를 실행합니다. for loop를 도는데, OutOfBound 에러가 뜨는 경우에, 에러 로그를 남기고 종료합니다. foo 메서드를 봅시다. 이 메서드는 0 이상 6 미만의 정수를 뽑습니다. 0, 1, 2, 3, 4, 5를 뽑는다..
예외 검색 결과
최근에 제 토이 프로젝트를 손 보면서, 바꾼 것이 몇 가지 있습니다. 이 중에서 UserService 단에서 예외 처리하는 부분을 추가하였습니다. 해당 부분은 여기서 볼 수 있어요. 현재 제 토이 프로젝트 레포에 있는 예외 처리 코드들이 살짝 비대한 경향이 있어서 추가적인 리팩토링을 할 예정입니다. 그 부분은 나중에 언급할 기회가 있을 듯 싶습니다. 이 글에서 설명할 부분은 이 문서와 일맥 상통한 내용이니 간단하게 읽어보시면 도움이 될 듯 합니다. 원래 regUser는 위와 같이 구현이 되어 있었습니다. 그리고 예외가 발생하면 Service 단에서도, Controller 단에서도 처리가 되지 않는 구조였습니다. 제 도서관 api의 db에 저장되어 있는 user_name은 위와 같습니다. 'cho'가 있으..
이펙티브 자바를 보다 보면, 표준 예외를 사용하라는 item이 있습니다. 여기에 언급되는 exception들을 보면 Collections에서도 자주 보이는 예외가 몇 개 있는데요. 이번 시간에는 이 중에 UnsupportedOperationException에 대해서 보도록 하겠습니다. 저번에 예를 들었던 것 중에, CopiesList를 들고 오겠습니다. 이것은 AbstractList를 상속받는다고 되어 있어요. 명세를 보면, immutable list를 리턴한다고 되어 있어요. 저번에 본 바로는 CopiesList가 Collection 내부에 private 클래스로 되어 있었어요. 그리고, 계속 읽어보면, n copies of the specified Object라고 되어 있는데요. 특수 오브젝트의 n개..
이펙티브 자바에 나오는 깊숙한 내용은 나중에 하기로 하고, try with resources 문에 대해서 간략하게 언급해 보도록 하겠습니다. 닫아야 할 자원. 이것들은 생각보다 어렵지 않게 찾을 수 있습니다. Stream, DB connection 등이 이에 속합니다. 저 또한 프로그램을 이런 식으로 작성하곤 했습니다. 대충 A라는 친구를 새로 생성합니다. 이것을 새로 생성하면 내부적으로 리소스를 오픈하는 작업을 수행합니다. 흔히들 생각하는 인풋 스트림이나 DB connection 등이라고 생각하시면 됩니다. try 안에서 do work를 합니다. 그런데, try 내부에서 a.close를 호출하면 안 됩니다. 왜냐하면, 중간에 Exception이 걸려서, main 함수에서 catch가 되는 경우에, a...
최근댓글