[Java] 예외 처리(try-catch)와 예외 던지기(throws)
try-catch 예외 처리는 안정적인 프로그램을 만들기 위해 필수적인 기능이다. 그것을 위해 자바에서는 try-catch 문을 사용한다. try-catch 기본 구조 try { // 예외가 발생할 가능성이 있는 코드 } catch ([예외타입] [변수명]) { // 예외 발생 시 실행되는 코드 } 예제 예제 코드 pub...
try-catch 예외 처리는 안정적인 프로그램을 만들기 위해 필수적인 기능이다. 그것을 위해 자바에서는 try-catch 문을 사용한다. try-catch 기본 구조 try { // 예외가 발생할 가능성이 있는 코드 } catch ([예외타입] [변수명]) { // 예외 발생 시 실행되는 코드 } 예제 예제 코드 pub...
커스텀 예외(Custom Exception) 커스텀 예외란? 자바에서 커스텀 예외(Custom Exception)는 Exception 클래스 또는 RuntimeException 클래스를 상속받아 직접 정의하는 예외 클래스이다. 커스텀 예외를 사용하는 이유 가독성 및 유지보수성 향상 애플리케이션의 특정 비즈니스 로직에...
일정관리 Develop 프로젝트를 진행하면서 겪은 트러블슈팅의 과정들에 대한 기록입니다. 해당 프로젝트의 전체소스는 여기 에서 확인하실 수 있습니다. 트러블슈팅1️⃣ ⭐️ 주제 JPA에서 발생한 N+1 문제와 QueryDSL DTO Projections 🔥 발생 일정 상세 조회 API에서 Schedule과 Comment를 함께 조회하는 ...
오류와 예외 Java에서 오류(Error)와 예외(Exception)는 프로그램 실행 중 발생하는 문제 상황을 나타낸다. 이 둘은 모두 Throwable 클래스를 상속받지만, 성격과 처리 방식이 다르다. Throwable 모든 예외와 에러의 최상위 클래스 throw로 던질 수 있고, catch로 잡을 수 있다. 하위 분류: Er...
람다표현식이란? Java 8부터 도입된 람다 표현식(Lambda Expression)은 자바에서도 함수형 프로그래밍 스타일을 가능하게 해준다. 람다는 익명 함수의 일종으로, 코드의 간결함과 가독성을 크게 향상시킨다. 함수형 인터페이스란? 하지만 이 람다의 진짜 핵심은 함수형 인터페이스에 있다. 함수형 인터페이스는 오직 하나의 추상 메서...
Iterator란? Iterator는 Java 컬렉션을 순차적으로 접근할 수 있게 해주는 객체이다. 다음 요소가 있는지 확인하는 hasNext()와 다음 요소를 꺼내오는 next() 메서드를 통해 리스트, 셋, 큐 등 다양한 컬렉션을 일관된 방식으로 순회할 수 있다. List<String> list = List.of("a", "b"...
Comparable & Comparator 둘 모두 인터페이스이다. Comparable 자신과 다른 객체를 비교 (비교의 대상) 숫자 클래스들, boolean, String, Date, BigDecimal, BigInteger 등 Comparator 주어진 두 객...
컬렉션이란? 데이터를 효율적으로 저장하고 관리할 수 있도록 제공하는 자료구조 프레임워크이다. 컬렉션은 배열보다 더 유연하고, 다양한 기능을 제공한다. 컬렉션의 핵심 구성요소 List (순서가 중요한 데이터) 특징: 저장 순서가 유지되며, 중복된 요소 저장이 가능하다. 주요 구현 클래스 ArrayList: 배...
제네릭은 왜 필요한가? 자바에서 컬렉션이나 API를 설계하다 보면 타입과 관련된 다양한 문제를 마주하게 된다. 그중에서도 컴파일 타임에 타입 안정성을 확보하고, 중복 없이 유연한 코드를 작성하기 위해 도입된 기능이 바로 제네릭(Generic)이다. 제네릭을 활용하면 형 변환에 의한 오류를 방지할 수 있으며, 다양한 타입에 대해 공통된 로직을...
일정관리 프로젝트를 진행하면서 겪은 트러블슈팅의 과정들에 대한 기록입니다. 해당 프로젝트의 전체소스는 여기 에서 확인하실 수 있습니다. 트러블슈팅 ⭐️ 주제 JPA를 사용해 일정 전체 목록 LIKE 조회하기 🔥 발생 Query Parameter 로 name 값을 받아 작성자명이 해당 문자열을 포함하는 일정 목록을 조회하는 기능을 구현했으...