2023년 1월 1일
08:00 AM
Buffering ...

최근 글 👑

내가 보고싶어 만드는 Java/Spring Exception 모음!

2024. 9. 25. 19:34ㆍ정보

하루에 4개씩!

더보기

1. 데이터베이스의 특징에 대해 말해보자!

  • 실시간 접근성(Real-Time Accessibility) : 비정형적인 질의(조회)에 대하여 실시간 처리에 의한 응답이 가능해야 한다.

  • 지속적인 변화(Continuous Evloution) : 데이터베이스의 상태는 동적입니다. 즉 새로운 데이터의 삽입(Insert), 삭제(Delete), 갱신(Update)으로 항상 최신의 데이터를 유지해야 한다!

  • 동시 공용(Concurrent Sharing) : 데이터베이스는 서로 다른 목적을 가진 여러 응용자들을 위한 것이므로 다수의 사용자가 동시에 같은 내용의 데이터를 이용할 수 있어야 한다!

  • 내용에 의한 참조(Content Reference) : 데이터베이스에 있는 데이터를 참조할 때 데이터 레코드의 주소나 위치에 의해서가 아니라 사용자가 요구하는 데이터 내용으로 찾는다!

2. 데이터베이서 언어에 대해 설명해보자!

  • DDL(정의어 : Data Definition Language) : 데이터베이스 구조를 정의, 수정, 삭제하는 언어(alter, create, drop ...)

  • DML(조작어 : Data Manipulation Language) : 데이터베이스 내의 자료 검색, 삽입, 갱신, 삭제를 위한 언어 (select, insert, update, delete)

  • DCL(제어어 : Data Control Language) : 데이터에 대해 무결성 유지, 병행 수행 제어, 보호와 관리를 위한 언어 (commit, rollback, greant, revoke)


3. SELECT 쿼리의 수행 순서를 알아보자!

 

FROM, ON, JOIN > WHERE, GROUP BY, HAVING > SELECT > DISTINCT > ORDER BY > LIMIT

 

  1. FROM - 각 테이블을 확인한다.

  2. ON - JOIN 조건을 확인한다.

  3. JOIN - JOIN이 실행되어 데이터가 SET으로 모아지게 된다. 서브쿼리도 함께 포함되어 임시 테이블을 만들 수 있게 도와준다.

  4. WHERE - 데이터셋을 형성하게 되면 WHERE의 조건이 개별 행에 적용된다. WHERE절의 제약 조건은 FROM절로 가져온 테이블에 적용될 수 있다.

  5.  GROUP BY - WHERE의 조건 적용 후 나머지 행은 GROUP BY절에 지정된 열의 공통 값을 기준으로 그룹화된다. 쿼리에 집계 기능이 있는 경우에만 이 기능을 사용해야 한다.

  6. HAVING - GROUP BY절이 쿼리에 있을 경우 HAVING 절의 제약조건이 그룹화된 행에 적용된다.

  7. SELECT - SELECT에 표현된 식이 마지막으로 적용된다.

  8. DISTINCT - 표현된 행에서 중복된 행은 삭제

  9. ORDER BY - 지정된 데이터를 기준으로 오름차순, 내림차순 지정

  10. LIMIT - LIMIT에서 벗어나는 행들은 제외되어 출력된다.


4. 트리거 (Trigger)에 대해 설명해보자!

 

  • 트리거는 특정 테이블에 대한 이벤트에 반응해 INSERT, DELETE, UPDATE 같은 DML 문이 수행되었을 때, 데이터베이스에서 자동으로 동작하도록 작성된 프로그램이다! 사용자가 직접 호출하는 것이 아닌, 데이터베이스에서 자동적으로 호출한다는 것이 가장 큰 특징이다!

내가 보고싶어 만드는 Java / Spring Exception 모음



<자바 표준 예외 (Java Standard Exceptions)

종류 설명 사용 목적
NullPointerException null 객체에 접근할 때 발생 객체가 제대로 초기화 되었는지 확인할 때
ArrayIndexOutOfBoundsException 배열 인덱스가 범위를 벗어났을 때 발생 배열의 인덱스를 검사할 때
IllegalArgumentException 메서드에 잘못된 인자가 전달되었을 때 발생 메서드 인자의 유효성을 검증할 때
ClassCastException 잘못된 형변환 시도 시 발생 객체 형변환을 할 때
ArithmeticException 0으로 나누는 등의 산술 오류 발생 시 수학 연산 오류를 처리할 때
NumberFormatException 숫자로 변환할 수 없는
문자열을 변환하려 할 때 발생
문자열을 숫자로 변환할 때 발생
IllegalStateException 객체 상태가 적절하지 않을 때 발생 메서드가 적절한 상태에서
호출되었는지 확인할 때
UnsupportedOperationException 지원되지 않는 연산을 호출할 때 발생 구현되지 않은 기능을 처리할 때
IndexOutOfBoundsException 인덱스가 리스트나 배열의 범위를
벗어났을 때 발생
컬렉션 또는 배열의 범위를 검사할 때
SecurityException 보안 제약 조건을 위반할 때 발생 보안 문제를 처리할 때
FileNotFoundException 파일을 찾을 수 없을 때 발생 파일 경로나 이름이 잘못되었는지 검사할 때 
IOException 입출력 작업에서 오류가 발생할 때 발생 파일, 네트워크 통신 등에서 입출력 오류를 처리할 때
ClassNotFoundException 클래스 파일을 찾지 못했을 때 발생 동적으로 클래스를 로드할 때 발생하는 문제를 처리할 때
NoSuchMethodExeption 메서드를 찾지 못했을 때 발생 리플렉션을 이용해 메서드를 호출할 때 문제를 처리할 때
InastantiationException 추상 클래스나 인터페이스 인스턴스화 시도 시 발생 클래스 인스턴스를 생성할 때 문제가 발생했는지 확인할 때
InterruptedException 스레드가 작업 중 인터럽트될 때 발생  멀티쓰레드 환경에서 스레드를 제어할 때
CloneNotSupportedException 객체 복제가 지원되지 않을 때 발생 객체 복제가 필요한 경우에 대한 예외 처리할 때
NoClassDefFoundError 클래스 파일이 없거나 로딩할 수 없을 때 발생 동적으로 클래스를 로드할 때 문제가 있는 경우 처리할 때
OutOfMemoryError JVM의 메모리가 부족할 때 발생  메모리 자원을 관리할 때 발생하는 문제를 처리할 때
StackOverflowError 재귀 호출이 너무 깊어질 때 발생  스택 메모리가 초과됐을 때 문제를 처리할 때
NoSuchFieldException 필드를 찾을 수 없을 때 발생  리플렉션을 통해 필드에 접근할 때 문제를 처리할 때
EOFException 파일 또는 스트림 끝에 도달했을 떄 발생 파일 또는 네트워크 스트림에서 데이터를 읽을 때 발생하는 문제를 처리할 때
MalformedURLException 잘못된 URL형식을 사용할 때 발생 URL형식을 검증할 때
SocketException 소켓 연결 오류가 발생할 때 발생 네트워크 통신 중 소켓 문제를 처리할 때
BindException 소켓이 이미 바인딩 되어 있을 때 발생 소켓을 다시 바인딩할 때 발생하는 문제를 처리할 때
ConnectException 연결이 실패할 때 발생 네트워크 연결 문제를 처리할 때
UnknownHostException 호스트 이름을 찾을 수 없을 때 발생 네트워크에서 호스트를 찾지 못할 때 문제를 처리할 때
 SocketTimeoutException 소켓 연결이 타임아웃 시 발생  소켓 통신 중 시간이 초과됐을 때 문제를 처리할 때
InterruptedIOException 입출력 작업이 인터럽트되었을 때 발생 입출력 작업 중 인터럽트 문제를 처리할 때
IllegalMonitorStateException 스레드가 모니터에 적절하게 접근하지 못할 때 발생 스레드 동기화 관련 문제를 처리할 때
IllegalAccessException 클래스나 메서드 접근 권한이 없을 때 발생 클래스나 메서드에 대한 접근 권한이 잘못됐을 때 문제를 처리할 때
ReflectiveOperationException 리플렉션 관련 오류 발생 시 리플렉션을 사용할 때 발생하는 문제를 처리할 때
InvaildClassException 직렬화에 문제가 있는 클래스일 때 발생 직렬화된 클래스의 유효성을 확인할 때
StreamCurruptedException 직렬화된 스트림이 손상되었을 때 발생 직렬화된 데이터를 읽을 때 문제를 처리할 때
OptionalDataException ObjectInputStream에서 예상치 못한 기본 데이터를 발견했을 때 발생 직렬화된 스트림에서 데이터 형식이 잘못됐을 때 문제를 처리하기 위함
InvaildObjectException 직렬화된 객체가 유효하지 않을 때 발생 직렬화된 객체의 무결성을 확인할 때
DataFormatException 잘못된 데이터 형식이 있을 때 발생  데이터 형식을 검증할 때 발생하는 문제를 처리하기 위함
URISyntaxException 잘못된 URI 문법을 사용할 때 발생 URI 형식을 검증할 때
SyncFailedException 파일 또는 디렉토리 동기화에 실패했을 때 발생 파일 시스템 동기화 문제를 처리할 때
AccessControlException 보안 권한 부족 시 발생 보안 제약 조건을 위반할 때 문제를 처리하기 위함
AclNotFoundException 접근 제어 목록을 찾을 수 없을 때 보안 관련 접근 권한 문제를 처리할 때
CertificateExceptionm 인증서 관련 오류 발생 시 인증서 검증 문제를 처리할 때
KeyStoreException 키스토어 관련 오류 발생 시 키스토어 문제를 처리할 때
UnrecoverableKeyException 복구할 수 없는 키가 있을 때 발생 키 복수 실패 시 문제를 처리할 때
InvaildKeyException 키가 유효하지 않을 때 발생 암호화 작업에서 키가 유효하지 않을 때 문제를 처리하기 위함
NoSuchAlgorithmException 특정 암호화 알고리즘이 없을 때 발생 암호화 알고리즘을 사용할 때 문제를 처리하기 위함
SignatureException 디지털 서명 오류 발생 시 디지털 서명 오류 검증 문제를 처리할 때
InvalidAlgorithmParameterException 알고리즘 매개변수가 유효하지 않을 때 발생 암호화 알고리즘의 매개변수가 잘못됐을 때 문제를 처리하기 위함
GeneralSecurityException 모든 보안 관련 예외의 일반 상위 클래스 보안 문제의 상위 예외로 사용
CertPathValidatorException 인증 경로 검증 실패 시 발생 인증서 경로 검증 문제를 처리할 떄
CertStoreException 인증서 저장소 관련 오류 발생 시 인증서 저장소 문제를 처리할 때
SSLException SSL 프로토콜 오류 발생 시 SSL 통신 중 발생하는 문제를 처리할 때

스프링 프레임워크 예외 (Spring Framwork Exception)

종류 설명 사용 목적
BeansException 스프링 빈 관련 예외의 상위 클래스 빈 생성 관리 과정에서 발생하는 문제를 처리할 때
NoSuchBeanDefinitionException 해당 빈을 찾을 수 없을 때 발생 의존성 주입 시 빈을 찾지 못할 때 문제를 처리할 때
BeanCreationException 빈 생성 실패 시 발생 빈을 생성할 때 발생하는 문제를 처리할 때
BeanInitializationException 빈 초기화 실패 시 발생 빈을 생성할 때 발생하는 문제를 처리할 때
UnsatisfiedDependencyException 빈 의존성 주입 실패 시 발생 빈의 의존성을 주입할 때 발생하는 문제를 처리할 때
BeanNotOfRequiredTypeException 빈이 요구된 타입과 일치하지 않을 때 발생 빈 타입이 맞지 않을 때 발생하는 문제를 처리할 때
TypeMismatchException 요청한 빈과 실제 빈 타입이 일치하지 않을 때 발생 요청과 실제 빈 타입의 불일치 문제를 처리할 때
NoUniqueBeanDefinitionException 하나의 빈만 기대했지만 여러 빈이 존재할 때 발생 중복된 빈 정의 문제를 처리할 때
MethodInvocationException 메서드 호출 중 예외가 발생할 때 빈 메서드 호출 시 발생하는 문제를 처리할 때
ApplicationContextException 애플리케이션 컨텍스트 설정 오류 발생 시  스프링 애플리케이션 컨텍스트 설정 과정에서 발생하는 문제를 처리할 때
ConversionNotSupportedException 요청된 타입으로 변환할 수 없을 때 발생 데이터 변환이 실패할 때 발생하는 문제를 처리하기 위함
HttpMessageNotReadableException HTTP 메시지를 읽을 수 없을 때 발생   클라이언트로부터 수신한 HTTP 요청을 처리할 때 발생하는 문제를 처리하기 위함
HttpMessageNotWritableException HTTP 메시지를 쓸 수 없을 때 발생 서버에서 클라이언트로 응답을 보낼 대 발생하는 문제를 처리할 때
MissingServletRequestParameterException 요청 파라미터가 없을 때 발생 요청에서 필수 파라미터가 빠졌을 때 문제를 처리하기 위함
HttpRequestMethodNotSupportedException 지원하지 않는 HTTP 메서드를 요청했을 때 발생 클라이언트가 잘못된 HTTP 메서드를 사용했을 때 문제를 처리하기 위함
HttpMediaTypeNotSupportedException 지원하지 않는 미디어 타입을 요청했을 때 발생 클라이언트가 서버에서 지원하지 않는 미디어 타입을 보냈을 대 문제를 처리하기 위함
HttpMediaTypeNotAcceptableException   요청한 미디어 타입을 수용할 수 없을 때 발생  클라이언트가 수용할 수 없는 미디어 타입을 요청했을 때 문제를 처리하기 위함
MissingPathVariableException 경로 변수 누락 시 발생 요청 경로에서 필요한 변수가 빠졌을 때 문제를 처리하기 위함
MissingServletRequestPartException 요청 파트가 누락되었을 때 발생 서블릿 요청에서 일부 데이터가 누락됐을 때 문제를 처리하기 위함
ServletRequestBindingException 서블릿 요청에 바인딩 실패 시 발생 서블릿 요청 파라미터를 객체에 바인딩할 때 발생하는 문제를 처리하기 위함
ConversionFailedException 형 변환이 실패했을 때 발생 요청 데이터의 형 변환 문제를 처리할 때
DataAccessException 데이터베이스 작업 실패 시 발생하는 일반 예외 데이터베이스에 접근하는 과정에서 발생하는 문제를 처리할 때
DuplicateKeyException 데이터베이스에 중복된 키가 있을 때 발생 유니크 키 중복 시 발생하는 문제를 처리할 때
IncorrectResultSizeDataAccessException 예상한 결과 크기가 다를 때 발생 쿼리 결과가 기대한 크기와 다를 때 문제를 처리하기 위함
DataIntegrityViolationException 데이터 무결성 위반 시 발생 데이터 무결성을 위반했을 때 문제를 처리하기 위함
DataRetrievalFailureException 데이터 검색 실패 시 발생 데이터베이스에서 데이터를 찾지 못할 때 문제를 처리하기 위함
DeadlockLoserDataAccessException 데이터베이스 교착 상태가 발생할 때 발생 데이터베이스 교착 상태로 인해 문제가 발생해 처리하기 위함
EmptyResultDataAccessException 쿼리 결과가 없을 때 발생 데[이터베이스에서 결과를 얻지 못했을 때 문제를 처리하기 위함
OptimisticLockingFailureException 낙관적 락 실패 시 발생 동시성 제어 과정에서 낙관적 락을 사용할 때 발생하는 문제를 처리할 때
QueryTimeoutException 쿼리 실행 시간이 초과되었을 때 발생 데이터베이스 쿼리 시간이 초과됐을 때 문제를 처리할 때
TransactionTimedOutException 트랜잭션 시간이 초과되었을 때 발생 트랜잭션이 기한 내에 완료되지 않았을 때 문제를 처리하기 위함
TransactionSystemException 트랜잭션 처리 중 시스템 오류가 발생할 때 던져지는 예외 트랜잭션 관련 시스템적 문제를 처리할 때
TransactionRequiredException 트랜잭션이 필요하지만 조재하지 않을 때 발생 트랜잭션이 필요한 작업에서 트랜잭션이 없을 때 문제를 처리하기 위함 
InvalidDataAccessApiUsageException 데이터베이스 API 사용이 잘못되었을 때 발생 잘못된 API 호출로 발생하는 문제를 처리할 때
UncategorizedDataAccessException 특정 범주에 속하지 않는 데이터 엑세스 오류 발생 시 데이터베이스 작업 중 분류되지 않은 문제를 처리할 때
JdbcUpdateAffectedIncorrectNumberOfRowsException 업데이트된 행 수가 예상과 다를 때 발생 업데이트 작업이 예상한 행 수와 다를 때 문제를 처리하기 위함
CannotAcquireLockException 데이터베이스 잠금을 획들할 수 없을 때 발생  데이터베이스 잠금을 얻지 못했을 때 문제를 처리하기 위함
ConcurrencyFailureException 동시성 제어 실패 시 발생 동시성 문제를 처리할 때
HibernateOptimisticLockingFailureException Hibernate의 낙관적 락 실패 시 발생 Hibernate에서 동시성 제어 문제를 처리할 때
JpaObjectRetrievalFailureException JPA 객체 검색 실패 시 발생 JPA에서 객체를 검색할 때 문제를 처리할 때
EntityNotFoundException JPA 엔티티를 찾을 수 없을 때 발생 JPA 엔티티 검색 문제를 처리할 때
LazyInitializationException Hibernate의 지연 로딩 초기화 실패 시 발생 Hibernate의 지연 로딩 문제를 처리할 때
StaleObjectStateException Hibernate에서 스테일 객체 상태가 있을 때 발생 Hibernate에서 스테일 상태 문제를 처리할 때
InvalidDataAccessResourceUsageException 데이터 자원 사용이 잘못되었을 때 발생 데이터 자우너 사용 문제를 처리할 때
DataSourceLookupFailureException 데이터 소스 조회 실패 시 발생 데이터 소스를 찾지 못할 때 문제를 처리할 때
NonTransientDataAccessException 일시적이지 않은 데이터 접근 실패 시 발생 데이터 접근 실패 문제를 처리할 때
TransientDataAccessException 일시적인 데이터 접근 실패 시 발생 일시적인 데이터 접근 문제를 처리할 때
CannotCreateTransactionException 트랜잭션 생성 실패 시 발생 트랜잭션 생성 과정에서 문제가 발생할 때 처리하기 위함
InvalidIsolationLevelException 트랜잭션 격리 수준이 유효하지 않을 때 발생 잘못된 트랜잭션 격리 수준을 처리할 때

'정보' 카테고리의 다른 글

SQL 기초부터 가보자  (1) 2024.10.04
Kafka란 뭘까?  (0) 2024.09.29
MySQL? PostgerSQL 뭐가 다른거지?  (2) 2024.09.27
VO, BO, DAO, DTO  (0) 2024.09.12
시간복잡도 / 공간복잡도,, 복잡하다,,  (4) 2024.09.02