java 10

잘못된 인자 전달 금지: IllegalArgumentException 완벽 가이드

1. ❓ IllegalArgumentException이란 무엇인가요?IllegalArgumentException은 메서드에 전달된 인자(Argument)가 적절하지 않을 때 발생하는 언체크드 예외(Unchecked Exception)입니다.주로 메서드 내부에서 입력값의 범위를 체크하거나, 특정 조건을 만족해야 하는 파라미터를 검증할 때 사용자가 직접 던지도록 설계하는 경우가 많습니다. 프로그램의 논리적 오류를 실행 시점에 즉시 파악할 수 있게 도와줍니다.2. 🔍 왜 발생하며, 언제 사용하나요?주로 **데이터의 유효성(Validation)**을 검사하는 로직에서 발생합니다.범위 초과: "나이는 0보다 커야 함"이라는 규칙이 있는데 -5가 들어온 경우길이 제한: "비밀번호는 8자 이상"이어야 하는데 3자만..

맞지 않는 옷을 입히지 마세요: ClassCastException 완벽 가이드

1. ❓ ClassCastException이란 무엇인가요?ClassCastException은 서로 상속 관계가 아니거나, 실제 객체의 타입과 일치하지 않는 타입으로 형변환(Casting)을 시도할 때 발생하는 언체크드 예외(Unchecked Exception)입니다.자바는 컴파일 시점에 어느 정도 타입 체크를 해주지만, 부모 타입으로 선언된 변수를 자식 타입으로 강제 변환할 때는 실행 시점(Runtime)에 실제 객체가 무엇인지 확인합니다. 이때 변환이 불가능하면 JVM이 이 예외를 던집니다.2. 🔍 왜 발생하나요? (주요 실수 사례)✅ 1. 부모 객체를 자식 타입으로 변환할 때부모 클래스로 생성된 객체는 자식 클래스의 정보를 가지고 있지 않습니다. 이를 억지로 자식 타입에 담으려 하면 에러가 발생합니..

0으로 나눌 수 없습니다! ArithmeticException 완벽 가이드

1. ❓ ArithmeticException이란 무엇인가요?ArithmeticException은 산술 연산 과정에서 예외적인 조건이 발생했을 때 던져지는 언체크드 예외(Unchecked Exception)입니다.가장 대표적인 사례는 정수를 0으로 나누려고 할 때(/ 0) 발생합니다. 수학적으로 정의되지 않은 연산을 시도하면 JVM은 프로그램을 중단시키는 대신 이 예외를 발생시켜 우리에게 알려줍니다.2. 🔍 왜 발생하나요? (주요 발생 사례)✅ 1. 정수를 0으로 나누는 경우 (가장 흔함)Java int a = 10;int b = 0;int result = a / b; // 여기서 ArithmeticException: / by zero 발생!✅ 2. 정수를 0으로 나머지 연산하는 경우Java int re..

정해진 선을 넘지 마세요: ArrayIndexOutOfBoundsException 완벽 가이드

1. ❓ ArrayIndexOutOfBoundsException이란 무엇인가요?이 예외는 배열의 범위를 벗어난 인덱스(Index)에 접근하려고 할 때 발생하는 언체크드 예외(Unchecked Exception)입니다.자바의 배열은 고정된 크기를 가지며, 인덱스는 항상 **0부터 (배열 길이 - 1)**까지입니다. 만약 크기가 5인 배열에서 5번째 인덱스(실제로는 6번째 요소)를 찾으려고 하면, JVM은 "그곳엔 아무것도 없어!"라며 이 예외를 던집니다.2. 🔍 왜 발생하나요? (주요 실수 사례)✅ 1. '작다(가장 전형적인 실수입니다. 배열의 길이를 조건으로 사용할 때 인덱스 범위를 초과하게 됩니다.Java int[] numbers = {10, 20, 30}; // 길이: 3, 유효 인덱스: 0, 1,..

자바의 영원한 숙제: NullPointerException (NPE) 완벽 가이드

1. ❓ NullPointerException이란 무엇인가요?NullPointerException은 객체 참조가 없는 상태(null)에서 해당 객체의 메서드를 호출하거나 필드에 접근하려 할 때 발생하는 언체크드 예외(Unchecked Exception)입니다.실행 시점(Runtime)에 발생하기 때문에 컴파일러가 미리 잡아주지 않아 더욱 까다로운 예외입니다.2. 🔍 주요 발생 원인초기화되지 않은 객체 사용: 객체를 선언만 하고 new 키워드로 생성하지 않은 채 사용할 때메서드 반환값 처리 미흡: 어떤 메서드가 null을 반환할 수 있는데, 이를 체크하지 않고 바로 메서드 체이닝을 할 때컬렉션 내부 요소 접근: 리스트나 맵에 들어있는 요소가 null인 경우Auto-unboxing 오류: 래퍼 클래스(In..

클래스가 어디로 사라졌을까? ClassNotFoundException 완벽 가이드

1. ❓ ClassNotFoundException이란 무엇인가요?ClassNotFoundException은 자바 가상 머신(JVM)이 **실행 시간(Runtime)**에 특정 클래스를 로드하려고 시도했지만, 클래스 패스(Classpath)에서 해당 클래스의 정의를 찾을 수 없을 때 발생하는 **체크드 예외(Checked Exception)**입니다.주로 Class.forName(), ClassLoader.findSystemClass(), ClassLoader.loadClass() 등을 사용하여 문자열로 된 클래스 이름을 직접 넘겨줄 때 발생합니다.2. 🔍 왜 발생하나요? (주요 원인)클래스 패스 설정 누락: 필요한 .jar 파일이나 .class 파일이 프로젝트의 빌드 경로(Build Path)에 포함되..

데이터베이스와의 소통 불능: SQLException 완벽 가이드

1. ❓ SQLException이란 무엇인가요?SQLException은 자바 표준 JDBC(Java Database Connectivity) API를 사용하여 데이터베이스에 접근하거나 조작할 때 발생하는 모든 오류를 다루는 체크드 예외(Checked Exception)입니다.DB 서버에 접속할 수 없거나, 실행한 SQL 문법이 틀렸거나, 제약 조건을 위반했을 때 등 매우 다양한 상황에서 발생합니다.2. 🔍 SQLException이 담고 있는 핵심 정보단순히 "에러가 났다"는 사실 외에도, SQLException 객체는 문제의 원인을 파악할 수 있는 세 가지 중요한 정보를 포함하고 있습니다.getMessage(): 에러의 상세 내용을 설명합니다.getSQLState(): ANSI SQL 규격에 정의된 5..

데이터 통신의 첫 번째 관문: IOException 완벽 이해하기

1. ❓ IOException이란 무엇인가요?IOException은 Input/Output Exception의 약자로, 말 그대로 데이터를 입력받거나 출력하는 과정에서 발생하는 예외를 의미합니다.자바의 예외 계층 구조에서 Exception을 직접 상속받는 체크드 예외이기 때문에, 반드시 try-catch로 처리하거나 throws로 외부로 던져야 컴파일이 가능합니다. 이는 시스템 외부 자원(파일, 소켓 등)과의 연결은 언제든 실패할 가능성이 있다는 것을 컴파일러가 미리 경고해 주는 것입니다.2. 🔍 주요 발생 원인과 자식들IOException은 범위가 매우 넓어서 상황에 따라 더 구체적인 자식 예외들이 발생하곤 합니다.예외 종류발생 상황FileNotFoundException지정한 경로에 파일이 존재하지 ..

재귀의 늪에 빠지다: StackOverflowError 원인과 해결 방법

1. ❓ StackOverflowError란 무엇인가요?자바에서 각 스레드는 자신만의 스택(Stack) 영역을 가집니다. 메서드가 호출될 때마다 해당 메서드의 정보(로컬 변수, 매개변수, 복귀 주소 등)가 '스택 프레임'이라는 이름으로 쌓이게 됩니다.StackOverflowError는 이 스택 영역의 제한된 용량을 초과하여 더 이상 프레임을 쌓을 수 없을 때 JVM이 던지는 에러입니다.2. 🔍 주요 발생 원인이 에러가 발생하는 원인은 대부분 코드의 논리적 오류에 있습니다.무한 재귀(Infinite Recursion): 탈출 조건이 없는 재귀 함수가 자기 자신을 끝없이 호출할 때 발생합니다. (가장 흔한 원인)상호 참조(Circular Reference): A 클래스의 toString()이 B를 호출하고..

서버가 멈췄다! 자바 OutOfMemoryError(OOME) 완벽 분석 및 해결 가이드

1. ❓ OutOfMemoryError란 무엇인가요?OutOfMemoryError는 자바 가상 머신(JVM)이 힙(Heap) 메모리 등 가용 가능한 메모리 공간이 부족하여 더 이상 객체를 할당할 수 없을 때 발생하는 Error입니다. 앞서 예외(Exception) 종류에서 배웠듯이, 이는 애플리케이션 수준에서 복구하기 힘든 심각한 상태를 의미합니다.2. 🔍 주요 발생 원인과 종류OOME는 발생하는 영역에 따라 원인이 제각각입니다. 가장 대표적인 3가지를 살펴볼까요?에러 메시지발생 원인주요 해결 방법Java heap space힙 영역에 객체가 가득 참메모리 누수 점검, -Xmx 옵션으로 힙 크기 증설GC overhead limit exceededGC가 너무 자주 발생하지만 회수되는 메모리가 적음로직 최적..

반응형