복구할 수 있는 상황에는 검사예외를, 프로그래밍 오류에는 런타임 예외를 사용하라 💡 문제 상황을 알리는 방법 Checked Exception UnChecked Exception Error 💡 Checked Exception과 Unchecked Exception을 구분 하는 기본 규칙 호출하는 쪽에서 복구하리라 여겨지는 상황이라면 Checked Exception을 사용해야 합니다. Checked Exception을 던지면 호출자가 그 예외를 try-catch로 잡아 처리하거나 throws를 해야합니다. 아래 코드에서는 FileInputStream은 호출하는 쪽에서 예외가 발생하면 알아서 복구해~ 라고 말하고 있으니 try-catch로 감싸거나 throws를 해야합니다. public void checkedE..
예외는 진짜 예외 상황에만 사용하라 🧨 잘못된 예외의 사용 방법 아래의 코드를 보고 무슨 일을 하는 코드인지 가늠하기가 힘듭니다. while 문을 무한으로 순회하면서 range 배열의 각 요소마다 climb() 메서드를 호출하는구나, 배열의 범위 밖의 요소를 찾으면 예외가 발생하고 끝나는구나라고 생각할 수 있습니다. 이 코드는 성능 향상,,,?을 위해 작성했다고 생각할 수 있겠지만, 표준 관용구(for-loop)보다 훨씬 느리다고 합니다. try { int i = 0; while(true) { range[i++].climb(); } } catch (ArrayIndexOutOfBoundsException e) { // ... } 💡 리펙토링 아래처럼 사용하면 try-catch문을 사용하지 않아도 됩니다. ..
네이티브 메서드는 신중히 사용하라 자바 네이티브 인터페이스(Java Native Interface, JNI)는 자바 프로그램이 네이티브 메서드를 호출하는 기술입니다. 여기서 네이티브 메서드란 C나 C++같은 네이티브 프로그래밍 언어로 작성된 메서드를 말합니다. public class Object { @HotSpotIntrinsicCandidate protected native Object clone() throws CloneNotSupportedException; } 💡주요 쓰임 레지스트리 같은 플랫폼 특화 기능에 사용됩니다. 네이티브 코드로 작성된 기존 라이브러리를 사용합니다. 성능 개선을 목적으로 성능에 결정적인 영향을 주는 영역만 따로 네이티브 언어로 작성합니다. 💡성능 개선을 목적으로 네이티브 메..
객체는 인터페이스를 사용해 참조하라 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하는게 좋습니다. 💡유연한 프로그램 작성 LinkedHashSet을 사용하는 인터페이스 타입 변수를 선언하면 유연하게 변경할 수 있습니다. //좋은 예 Set sonSet = new LinkedHashSet(); //나쁜 예 LinkedHashSet sonSet = new LinkedHashSet(); 💡다른 타입으로 변경 좋은 예는 Set 인터페이스 타입이기 때문에 다른 구현체로 변경해도 에러가 발생하지 않습니다. 하지만 나쁜 예의 경우 LinkedHashSet 인터페이스 타입이기 때문에 다른 구현체를 받는다면 컴파일 에러가 발생하게 됩니다. //좋은 예 Set sonSe..
- Total
- Today
- Yesterday
- spring boot poi excel download
- microkernel architecture
- redis 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- 자바 백엔드 개발자 추천 도서
- spring boot excel download paging
- transactional outbox pattern spring boot
- spring boot redisson destributed lock
- 공간 기반 아키텍처
- pipeline architecture
- java userThread와 DaemonThread
- transactional outbox pattern
- space based architecture
- service based architecture
- 레이어드 아키텍처란
- 트랜잭셔널 아웃박스 패턴 스프링부트
- polling publisher spring boot
- 람다 표현식
- 서비스 기반 아키텍처
- spring boot redisson sorted set
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot 엑셀 다운로드
- @ControllerAdvice
- spring boot redisson 분산락 구현
- spring boot excel download oom
- redis sorted set으로 대기열 구현
- pipe and filter architecture
- java ThreadLocal
- redis sorted set
- spring boot redis 대기열 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |