PROGRAMING/JAVA

[TRY/CATCH] 예외처리 및 트랜잭션 처리

Popix 2020. 9. 7. 12:19

예외처리

  • 에러가 날때 그에 맞는 적절한 처리하기 윈한 try ... catch, throw 등을 이용하여 에러를 처리한다.

  • catch영역은 정확한 Exception 표기 활용하여 정의한다.

  • RuntimeException실행 시 발생하는 예외이고 Exception컴파일 시 발생하는 예외이다.
    즉,

    Exception 은 프로그램 작성 시 이미 예측 가능한 예외를 작성할 때 사용하고

    RuntimeException 은 발생 할수도 발생 안 할수도 있는 경우에 작성한다.
    다른 말로 ExceptionChecked Exception, RuntimeExceptionUnchecked Exception이라고도 한다.

  • 프로그래밍 시 Exception을 처리하는 위치는 대단히 중요하며, 프로그램의 수행여부를 결정하기도 하고

    트랜잭션 처리와도 밀접한 관계가 있기 때문이다.

트랜잭션(Transaction)

  • 하나의 작업 단위를 뜻한다.

  • 상품발송의 예로 다음과 같이 포장, 영수증발행, 발송 메서드에서는 예외를 throw하고

    상품발송 메서드에서 throw된 예외를 처리하여 모두 취소하는 것이 완벽한 트랜잭션 처리 방법이다.
    (포장, 영수증발행, 발송이라는 세가지 중 1가지라도 실패하면 모두 취소처리)

[정상적인 예]

상품발송() {
    try {
        포장();
        영수증발행();
        발송();
    }catch(예외) {
       모두취소();
    }
}

포장() throws 예외 {
   ...
}
영수증발행() throws 예외 {
   ...
}
발송() throws 예외 {
   ...
}

[잘못된 예]

  • 각각의 메소드에 예외가 처리되어 있다면 포장은 되었는데 발송은 안되고 포장도 안되었는데 발송이 되고 이런 뒤죽박죽의 상황이 연출예상(주의사항)
상품발송() {
    포장();
    영수증발행();
    발송();
}

포장(){
    try {
       ...
    }catch(예외) {
       포장취소();
    }
}

영수증발행() {
    try {
       ...
    }catch(예외) {
       영수증발행취소();
    }
}

발송() {
    try {
       ...
    }catch(예외) {
       발송취소();
    }
}