Spring 트 랜 잭 션 관 리 는 런 타임 이상 만 스크롤 백 합 니 다.

1.결론 Spring 의 사무 관 리 는 기본적으로 운행 기 이상(java.lang.Runtime Exception 및 하위 클래스)만 스크롤 백 합 니 다.하나의 방법 이 Exception 이나 Checked 이상 을 던 지면 Spring 사무 관 리 는 기본적으로 스크롤 백 을 하지 않 습 니 다.이상 분류 에 대한 상세 한 소개:1.기본 개념 은 자바 의 이상 구조 도 를 본다  Throwable 은 모든 이상 한 루트 입 니 다.java.lang.Throwable Error 는 오류 입 니 다.java.lang.Error Exception 은 이상 입 니 다.java.lang.Exception 2,Exception 은 일반적으로 Checked 이상 과 Runtime 이상 으로 나 뉘 는데 모든 Runtime Exception 류 와 그 하위 클래스 의 인 스 턴 스 는 Runtime 이상 이 라 고 하고 이 범주 에 속 하지 않 는 이상 은 CheckedException 이 라 고 합 니 다.① Checked 이상 은 자바 언어 만 Checked 이상 을 제공 합 니 다.자바 는 Checked 이상 이 모두 처리 할 수 있 는 이상 이 라 고 생각 하기 때문에 자바 프로그램 은 Checked 이상 을 표시 해 야 합 니 다.프로그램 이 Checked 이상 을 처리 하지 않 으 면 컴 파일 할 때 오류 가 발생 하여 컴 파일 할 수 없습니다.이 는 자바 의 디자인 철학 을 보 여 준다.잘못된 처 리 를 보완 하지 않 은 코드 는 실 행 될 기회 가 전혀 없다.Checked 이상 처리 방법 은 두 가지(1)가 있 습 니 다.현재 방법 은 이 이상 을 어떻게 처리 하 는 지 알 고 있 으 면 try..catch 블록 으로 이 이상 을 처리 합 니 다.(2)현재 방법 은 어떻게 처리 해 야 할 지 모 르 고 이 방법 을 정의 하 는 것 은 이 이상 을 던 지 는 것 입 니 다
 
package cn.xy.test;
import java.io.IOException;
/**
* Checked
* @author xy
*
*/
public class CheckedExceptionMethods
{
// , checkedException RuntimeException, checkedException
public void method1() throws Exception
{
System.out.println(" ");
}
//
public void testMethod1_01()
{
try
{
method1();
}
catch (Exception e)
{
e.printStackTrace();
}
}
//
public void testMethod1_02() throws Exception
{
method1();
}
public void testMethod1_03() throws Exception
{
throw new Exception();
}
public void testMethod1_04()
{
try
{
throw new Exception();
}
catch (Exception e)
{
e.printStackTrace();
}
}
// checkedException IOException
public void method2() throws IOException
{
System.out.println(" IO ");
}
public void testMethod2_01()
{
try
{
method2();
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void testMethod2_02() throws Exception
{
method2();
}
}
우리 가 잘 아 는 Checked 이상 은 자바.lang.ClassNotFoundException 자바.lang.NoSuchMetodException java.io.IOException ② Runtime Exception Runtime 예 를 들 어 나 누 기 가 0 과 배열 아래 표 시 된 경 계 를 넘 는 등 빈번 하고 처리 가 번 거 로 우 며 설명 이나 캡 처 를 표시 하면 프로그램의 가 독성 과 운영 효율 에 큰 영향 을 줄 수 있 습 니 다.그래서 시스템 에서 자동 으로 감지 하여 부족 한 이상 처리 프로그램 에 맡 깁 니 다.물론 처리 요구 가 있다 면 포획 을 표시 할 수도 있 습 니 다.
 
package cn.xy.test;
/**
*
* @author xy
*
*/
public class RuntimeExcetionMethods
{
public void method3() throws RuntimeException
{
System.out.println(" ");
}
public void testMethod3_01()
{
method3();
}
public void testMethod1_02()
{
throw new RuntimeException();
}
}
우리 가 비교적 잘 아 는 RumtimeException 류 의 하위 클래스 는 자바.lang.Arithmetic Exception 자바.lang.Array Store Excetpion 자바.lang.classCastException 자바.lang.Index OutOf Bounds Exception 자바.lang.NullPointer Exception 3.Error 프로그램 이 제어 할 수 없 는 오류 가 발생 했 을 때 보통 사용자 에 게 알 리 고 프로그램의 실행 을 중단 합 니 다.이상 과 다른 것 은 Error 와 하위 클래스 의 대상 이 던 져 져 져 서 는 안 된다 는 것 이다.Error 는 throwable 의 하위 클래스 로 컴 파일 시간 과 시스템 오 류 를 대표 하 며 합 리 적 인 프로그램 이 캡 처 하려 고 하지 말 아야 할 심각 한 문 제 를 표시 합 니 다.Error 는 자바 가상 컴퓨터 에서 생 성 되 고 던 집 니 다.동적 링크 실패,가상 컴퓨터 오류 등 을 포함 합 니 다.절 차 는 그것 을 처리 하지 않 는 다.2.기본 방식 을 바 꾸 어@Transaction 주석 에서 noRollbackfor 와 Rollbackfor 를 정의 합 니 다.Transaction(noRollbackfor=Runtime Exception.class)@Transaction(Rollbackfor=Exception.class)은 기본 트 랜 잭 션 처리 방식 을 바 꾸 었 습 니 다.3.이것 은 사용자 정의 이상 이 있 을 때 사용자 정의 이상 을 Runtime Exception 에서 계승 하도록 요구 합 니 다.이렇게 던 질 때 Spring 의 기본 적 인 업무 처리 에 의 해 정확하게 처 리 됩 니 다.

좋은 웹페이지 즐겨찾기