PROGRAMING/JAVA
[TRY/CATCH] 예외처리 및 트랜잭션 처리
Popix
2020. 9. 7. 12:19
예외처리
에러가 날때 그에 맞는 적절한 처리하기 윈한 try ... catch, throw 등을 이용하여 에러를 처리한다.
catch영역은 정확한 Exception 표기 활용하여 정의한다.
RuntimeException 은 실행 시 발생하는 예외이고 Exception 은 컴파일 시 발생하는 예외이다.
즉,Exception 은 프로그램 작성 시 이미 예측 가능한 예외를 작성할 때 사용하고
RuntimeException 은 발생 할수도 발생 안 할수도 있는 경우에 작성한다.
다른 말로 Exception을 Checked Exception, RuntimeException을 Unchecked Exception이라고도 한다.프로그래밍 시 Exception을 처리하는 위치는 대단히 중요하며, 프로그램의 수행여부를 결정하기도 하고
트랜잭션 처리와도 밀접한 관계가 있기 때문이다.
트랜잭션(Transaction)
하나의 작업 단위를 뜻한다.
상품발송의 예로 다음과 같이 포장, 영수증발행, 발송 메서드에서는 예외를 throw하고
상품발송 메서드에서 throw된 예외를 처리하여 모두 취소하는 것이 완벽한 트랜잭션 처리 방법이다.
(포장, 영수증발행, 발송이라는 세가지 중 1가지라도 실패하면 모두 취소처리)
[정상적인 예]
상품발송() {
try {
포장();
영수증발행();
발송();
}catch(예외) {
모두취소();
}
}
포장() throws 예외 {
...
}
영수증발행() throws 예외 {
...
}
발송() throws 예외 {
...
}
[잘못된 예]
- 각각의 메소드에 예외가 처리되어 있다면 포장은 되었는데 발송은 안되고 포장도 안되었는데 발송이 되고 이런 뒤죽박죽의 상황이 연출예상(주의사항)
상품발송() {
포장();
영수증발행();
발송();
}
포장(){
try {
...
}catch(예외) {
포장취소();
}
}
영수증발행() {
try {
...
}catch(예외) {
영수증발행취소();
}
}
발송() {
try {
...
}catch(예외) {
발송취소();
}
}