no image
[이펙티브자바 - 아이템75] 예외의 상세 메시지에 실패 관련 정보를 담으라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템75. 예외의 상세 메시지에 실패 관련 정보를 담으라 예외를 잡지 못해 프로그램이 실패하면, 시스템은 stack trace 정보를 자동으로 출력한다. 스택 추적은 예외 객체의 toString 메서드를 호출해 얻는 문자열이다. 이 정보가 실패 원인을 분석해야 하는 프로그래머 혹은 SRE가 얻을 수 있는 유일한 정보인 경우가 많다. 따라서 toString 메서드에 실패 원인에 관한 정보를 가능한 한 많이 담아 반환하는 일은 아주 중요하다. 사후 분석을 위해!! 실패 순간을 포착하려면 발생한 예외에 관여된 모든 ..
2021. 12. 11. 03:39
no image
[이펙티브자바 - 아이템74] 메서드가 던지는 모든 예외를 문서화하라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템74. 메서드가 던지는 모든 예외를 문서화하라 메서드가 던지는 예외는 그 메서드를 올바로 사용하는데 아주 중요한 정보다. 따라서 각 메서드가 던지는 예외 하나하나를 문서화하는 데 충분한 시간을 쏟아야 한다. 검사 예외 문서화 검사 예외는 항상 따로따로 선언하고, 각 예외가 발생하는 상황을 자바독의 @throws 태그를 사용하여 정확히 문서화하자. 공통 상위 클래스 하나로 뭉뚱그려 선언하는 일은 삼가자. 메서드가 Exception이나 Throwable을 던진다고 선언해서는 안 된다. 메서드 사용자에게 각 예외..
2021. 12. 11. 03:28
no image
[이펙티브자바 - 아이템73] 추상화 수준에 맞는 예외를 던지라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템73. 추상화 수준에 맞는 예외를 던지라 수행하려는 일과 관련 없어 보이는 예외가 튀어나오면 당황스러울 것이다. 메서드가 저수준 예외를 처리하지 않고, 바깥으로 전파해버릴 때 종종 일어나는 일이다. 사실 이는 단순히 프로그래머를 당황시키는 데 그치지 않고, 내부 구현 방식을 드러내어 윗 레벨 API를 오염시킨다. 예외 번역 이 문제를 피하려면 상위 계층에서는 저수준 예외를 잡아 자신의 추상화 수준에 맞는 예외로 바꿔 던져야 한다. 이를 예외 번역(exception translation) 이라 한다. // 예..
2021. 12. 11. 02:44
no image
[이펙티브자바 - 아이템72] 표준 예외를 사용하라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템72. 표준 예외를 사용하라 예외도 재사용하는 것이 좋으며, 자바 라이브러리는 대부분 API에서 쓰기에 충분한 수의 예외를 제공한다. 표준 예외 사용의 장점 다른 사람이 익히고 사용하기 쉬워진다. 많은 프로그래머에게 이미 익숙해진 규약을 그대로 따르기 때문이다. 프로그램 코드도 읽기 쉽다. 에외 클래스가 적을수록 메모리 사용량도 줄고, 클래스를 적재하는 시간도 적게 걸린다. 자주 재사용되는 예외 IllegalArgumentExceptoin : 호출자가 인수로 부적절한 값을 넘길 때 던지는 예외 Illegal..
2021. 12. 10. 22:43
no image
[이펙티브자바 - 아이템71] 필요 없는 검사 예외 사용은 피하라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템71. 필요 없는 검사 예외 사용은 피하라 검사 예외를 싫어하는 자바 프로그래머가 많지만, 제대로 활용하면 API와 프로그램의 질을 높일 수 있다. 결과를 코드로 반환하거나 비검사 예외를 던지는 것과 달리, 검사 예외는 발생한 문제를 프로그래머가 처리하여 안전성을 높이게끔 해준다. 하지만 문제가 있다. 검사 예외의 문제 검사 예외를 남발하면 쓰기 불편한 API가 된다. 어떤 메서드가 검사 예외를 던질 수 있다고 선언했다면, 이를 호출하는 코드에서는 catch 블록을 두어 그 예외를 붙잡아 처리하거나 더 바깥..
2021. 12. 10. 22:25
no image
[이펙티브자바 - 아이템70] 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템70. 복구할 수 있는 상황에는 검사 예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 자바에는 문제 상황을 알리는 타입으로 검사 예외, 런타임 예외, 에러, 이렇게 세가지를 제공한다. 하지만 언제 무엇을 사용해야 하는지 헷갈려 하는 프로그래머들이 종종 있다. 이럴 때 참고하면 좋은 지침들을 알아보자. 검사 예외 (Checked Exception) 호출하는 쪽에서 복구하리라 여기지는 상황 검사 예외를 던지면 호출자가 그 예외를 catch로 잡아 처리하거나 더 바깥으로 전파하도록 강제하게 된다. 따라서 메서..
2021. 12. 10. 21:58
no image
[이펙티브자바 - 아이템69] 예외는 진짜 예외 상황에만 사용하라
10장. 예외 - GOAL 예외를 제대로 활용한다면 프로그램의 가독성, 신뢰성, 유지보수성이 높아진다. 그러나 잘못 사용하면 반대의 효과만 나타난다. 예외를 효과적으로 활용하는 방법을 습득하자. 아이템69. 예외는 진짜 예외 상황에만 사용하라 운이 없다면 언제가 다음 코드를 마주칠지도 모른다. try { int i = 0; while(true) range[i++].climb(); } catch(ArrayIndexOutOfBoundsException e) { } 무슨 일을 하는지 알 수 없다. 이 코드는 배열의 원소를 순회하는데, 무한루프를 돌다가 배열의 끝에 도달해 ArrayIndexOutOfBoundsException이 발생하면 끝을 낸다. 아래와 같이 작성했다면 모든 프로그래머가 이해했을 것이다. f..
2021. 12. 10. 21:50
no image
[Http Method] PATCH vs PUT 멱등성 보장? 비보장?
멱등 vs 비멱등 멱등 : 여러 번 요청해도 결과가 동일하다. 비멱등 : 여러 번 요청하면 그 결과가 누적돼서 나온다. (동일하지 않다) GET으로 조회하는 것은 멱등하다 새로고침을 여러번 한다고 해서 페이지가 바뀌는 경우는 없다. DELETE도 멱등하다. 삭제하고, 두번째 삭제에서는 삭제할 게 없어서 삭제된 것 처럼 표시된다. PUT 멱등하다. 해당 리소스를 완전히 교체해 버리기 때문에 멱등이다. PATCH 는? 아래 참고 PATCH vs PUT PUT : 자원의 전체 교체 PATCH : 자원의 부분 교체 PUT 잘못된 예시 PUT 옳은 예시 PATCH 원본 데이터 { "name" : "Hyeong","age" : 20 } 요청 body PUT /user/1 { "age" : 25 } PUT /user..
2021. 11. 22. 22:54
no image
글로벌 서비스 구축을 위한 TimeZone(타임존) 적용 방법
타임존이란 동일한 로컬 시간을 따르는 지역을 의미하며, 주로 해당 국가에 의해 법적으로 지정된다. 보통 국가별로 각자의 고유한 타임존을 사용하고 있으며, 미국이나 캐나다처럼 면적이 넓은 나라인 경우 지역별로 각지 다른 타임존을 사용하기도 한다. 예를들어 우리나라의 타임존은 KST (Korea Standard Time)이라고 불리는데, 기준 시간보다 9시간 빠른 영역이다. GMT, UTC, 오프셋(Offset)은 무엇인가? GMT (GreenWich Mean Time) && UTC(Coordinated Universal Time) 영국 그리니치 천문대를 기준으로 하는 태양시간이다. 지구의 자전주기의 흐름이 조금씩 늦어져서 이를 해결하기 위해 새로운 표준으로 제정한 시간이 UTC 이다. 실제 소프트웨어를 사..
2021. 11. 1. 17:51