Spring 예외처리

DeadWhale·2022년 6월 30일
0

Spring

목록 보기
17/25
post-thumbnail

예외처리

스프링의 경우

@ 선언적 트랜잭션 처리

게시글 작성 + image삽입 구현

Spring에서 트랜잭션 처리하는 방법

  • AOP (관점 지향 프로그래밍)을 이용해 DAO -> Service 또는 Service 코드 수행 반환되는 시점에
    예외가 발생시 rollback을 수행 (관점지향 ~~할 때 , ~~ 할 경우 )

방법 1) <tx:advice> xml을 이용한 방식 -> 패턴을 지정하며 일치하는 메서드 호출 시 자동으로 트랜잭션을 제어
너무 빡빡해서 느려짐

방법 2) @Transactional 어노테이션 활용 - 선언적 트랜잭션 처리 방법.
RunTimeException (Unchecked Exception) 처리를 기본값으로 같는다


Checked Exception : 예외 처리가 필수 ( transFerTo ) ==
외부 요소들 , 발생시 충격강도가 강할때 ,
SQL관련 예외 , 파일 업로드 관련 예외

UnChecked Exception : 예외 처리가 선택 ( int a = 10/0);
산술적 예외 ,
사용자의 문제들

rollbackFor : rollback을 수행하기 위한 예외의 종류를 작성한다.

@Transactional(rollbackFor = { Exception.class })

사용자 정의 예외

이미지의 입출력을 제어하는 예외명이 따로 없어 직접 만들기로 했다

} else {// 이미지 삽입 실패시
	// 사용자가 정의한 예외를 rollback을 수행하게함.
	throw new InsertFailException(); // 매개변수로 작성 가능
}

이미지를 서버에 업로드중 발생할 수 있는 예외인대
예외 처리는 @Transactional 어노테이션으로 예외는 잡아서 롤백은 처리하지만

예외명을 호출할수 있게 연결한다.
throw : 예외처리를 의미

//사용자 정의 예외 생성 방법

//1) 기존에 존재하는 예외 클래스 하나를 상속 받는다
//   단 , RuntimeException과 상속관계인 예외를 상속받게 되면
//	 자동적으로 Unchecked Exception이 된다.

//2) 생성자 작성시 super() 생성자를 이용해서 코드 구현

public class InsertFailException extends RuntimeException{
	//따로 별건 없다 그냥 예외의 이름을 생각하는 수준
	public InsertFailException() {
		super("게시글 삽입 실패");
	}
	public InsertFailException(String msg) {
		super(msg);
	}
}

0개의 댓글