java 5

IllegalStateException - 지금 상태에서 호출하면 안 되는 메서드

✅ java.lang.IllegalStateExceptionException in thread "main" java.lang.IllegalStateException: Already initialized at com.example.Initializer.init(Initializer.java:18) 🔍 자주 발생하는 케이스1. 이미 초기화된 상태에서 다시 초기화 시도public class Initializer { private boolean initialized = false; public void init() { if (initialized) { throw new IllegalStateException("이미 초기화되었습니다."); } initia..

DevLog/Java 2025.05.18

java.lang.IllegalArgumentException - 메서드 호출이 잘못됐다는 신호

✅ java.lang.IllegalArgumentExceptionException in thread "main" java.lang.IllegalArgumentException: Width must be greater than zero at com.example.ImageResizer.resize(ImageResizer.java:42) 🔍 자주 발생하는 케이스1. 유효하지 않은 값이 들어왔을 때public void setAge(int age) { if (age 메서드에 유효하지 않은 값이 전달되었을 때 사용자가 명시적으로 던짐2. 외부 라이브러리 내부에서 발생Files.readString(Path.of("")); // IllegalArgumentException비어있는 경로나 null 값을 넘..

DevLog/Java 2025.05.18

java.util.ConcurrentModificationException - 반복문에서 리스트 수정하면 생기는 문제

✅ java.util.ConcurrentModificationExceptionException in thread "main" java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1043) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:997) 🔍 자주 발생하는 케이스1. for-each 문에서 remove 시도List list = new ArrayList(); list.add("a"); list.add("b"); for (String item : list) { if (item.equ..

DevLog/Java 2025.05.18

java.lang.NullPointerException - 왜 null인지 모를 때

✅ java.lang.NullPointerExceptionException in thread "main" java.lang.NullPointerException at com.example.MyClass.myMethod(MyClass.java:10) 🔍 자주 발생하는 케이스 1. Spring에서 주입 실패@Autowired private SomeService service; service.doSomething(); // 여기서 NullPointerException원인: 해당 빈이 스프링 컨텍스트에 등록되지 않았거나, 컴포넌트 스캔 대상이 아님해결: @Component, @Service, @Repository 등 어노테이션 누락 여부 확인2. Map에서 존재한다고 착각한 keyMap userMap = n..

DevLog/Java 2025.05.18

Gradle 의존성 정리

implementation, api, compileOnly, runtimeOnly 차이?이름만 보고 쓰기엔 헷갈려서 정리해두기로 했다. ✅ 기본 개념 요약키워드상황컴파일 시 포함실행 시 포함다른 모듈에서 사용implementation내부 구현용. 외부에는 노출하지 않음✅✅❌api외부에 노출되는 라이브러리✅✅✅compileOnly컴파일만 필요. 실행 시엔 없어야 함✅❌❌runtimeOnly런타임에만 필요. 컴파일엔 불필요❌✅❌ 📌 키워드별 설명과 예시1. implementationimplementation 'org.springframework.boot:spring-boot-starter-web' 대부분의 의존성은 이걸로 선언하면 충분하다.implementation은 다른 모듈에서 이 모듈을 의존하더라도..

DevLog/Java 2025.04.25