-
9주차 과제: 예외 처리프로그래밍 언어/Java 2021. 1. 14. 17:56
1.자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
언어간의 조금씩의 차이가 있지만 모두 예외처리문을 갖고 있다. 사실 Go Lang 예외처리가 없는 예외가 있기도...
그럼 예외처리란 무엇일까. 우리가 코드를 설계하고 실행하면서 모든 과정이 계획대로 되면 좋겠지만 100% 완벽한 코드를 만들어 낸다는 것은
어렵다. 그래서 의도치 못한 결과까지 대비하여 설계한 것을 예외처리라고 한다. 예시로 아래는 JPA메인메소드의 일부분이다.
public class JpaMain { public static void main(String[] args) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("hello"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); tx.begin(); //트랜잭션 시작 try{ tx.commit(); //트랜잭션 커밋 시도 }catch (Exception e){ tx.rollback(); //예외발생시 롤백 } finally { em.close(); //위 try, catch의 결과와는 상관없이 Entity Manager는 close } emf.close(); } }
try절에는 예외가 발생할 가능성이 있는 코드를 넣어주고 그 코드에서 오류를 발생했을 때 catch절이 잡아내 처리한다.
마지막으로 try, catch 결과 여부와는 관계없이 실행되어야할 코드가 있다면 finally절에 넣어서 실행시킬 수 있다.
그렇다면 throws란? 말그대로 던진다는 의미로 발생한 오류를 호출한 상위계층에게 처리를 해달라고 전달하는 것이다. 그것을 받은 클래스는
try~catch 구문을 사용해야만 한다. 그럼 throw는 무엇일까? 사용자가 직접 오류를 터트릴 때 throw 객체를 생성해서 발생시킬 수 있다.
포스팅 마지막에서 코드로 직접 사용해봤다.
2.자바가 제공하는 예외 계층 구조
3.Exception과 Error의 차이는?
Exception은 오류가 발생하였지만 내부에서 해결가능한 오류를 말한다, 그에 반해 Error는 프로그램 단위에서 처리할 수 없는 치명적인 오류를 뜻한다.
4.RuntimeException과 RE가 아닌 것의 차이는?
RE(RuntimeException)이란 RuntimeException을 상속받는 Exception들을 뜻한다. 이들은 컴파일 당시에 오류검사를 하지않아 Unchecked Exception이라고도 한다. 반대로 RE가 아닌 Exception 들을 Checked Exception이라 하며 컴파일과 동시에 오류검사를 한다.
5.커스텀한 예외 만드는 방법
새로운 Exception 클래스를 만들어 Exception 을 상속해주고 조건문 안에 throw를 만들어 오류를 발생시켜주면 된다.
'프로그래밍 언어 > Java' 카테고리의 다른 글
3주차 과제: 연산자 (0) 2021.01.15 2주차 과제: 자바 데이터 타입, 변수 그리고 배열 (0) 2021.01.14 1주차 과제: JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가. (1) 2021.01.14