JPA 표준 예외 정리 JPA 표준 예외들은 javax.persistence.PersistenceException의 자식 클래스다. 그리고 이 예외 클래스는 RuntimeException의 자식이다. 따라서 JPA 예외는 모두 언체크 예외다. JPA 표준 예외는 크게 2가지로 나눌 수 있다. 트랜잭션 롤백을 표시하는 예외 트랜잭션 롤백을 표시하지 않는 예외 트랜잭션 롤백을 표시하는 예외는 심각한 예외이므로 복구해선 안 된다. 이 예외가 발생하면 트랜잭션을 강제로 커밋해도 트랜잭션이 커밋되지 않고 대신에 javax.persistence.RollbackException 예외가 발생한다. 반면에 트랜잭션 롤백을 표시하지 않는 예외는 심각한 예외가 아니다. 따라서 개발자가 트랜잭션을 커밋할지 롤백할지를 판단하면..
예외
원인 예외(cause exception) 한 예외가 다른 예외를 발생시킬 수 있다. 예를 들어 예외A가 예외B를 발생시켰다면, A를 B의 '원인 예외(cause exception)'라고 한다. try { startInstall(); copyFiles(); } catch (SpaceException e) { InstallException ie = new InstallException("설치중 예외발생"); // 예외 생성 ie.initCause(e); // InstallException의 원인 예외를 SpaceException으로 지정 throw ie; // InstallException을 발생시킨다. } catch (MemoryException me) { ... } Throwable initCause(T..
예외 되던지기 한 메서드에서 발생할 수 있는 예외가 여럿인 경우, 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수있다. 이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능하다. 예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 다시 발생한 예외는 이 메서드를 호출한 메서드에게 전달되고 호출한 메서드의 try-catch문에서 예외를 또 다시 처리한다. static void method1() throws Exception { try {..
사용자 정의 예외(Exception) 만들기 기존의 정의된 예외 클래스 외에 필요에 따라 프로그래머가 새로운 예외 클래스를 정의하여 사용할 수 있다. 보통 Exception 클래스로부터 상속받는 클래스를 만들지만, 필요에 따라 알맞은 예외 클래스를 선택할 수 있다. class MyException extends Exception { private final int ERR_CODE; MyException(String msg, int errCode) { // 오류 메시지와 오류 코드를 매개변수로 받는 생성자 super(msg); // 조상인 Exception 클래스의 생성자를 호출 this.ERR_CODE = errCode; } MyException(String msg) { this(msg, 100); } ..
메서드(Method)에 예외(Exception) 선언하기 메서드 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는 예외를 선언할 수 있다. 예외가 여러개일 경우 쉼표(,)로 구분한다. 이런 경우 예외가 처리된것이 아니고 단순히 전달만 하는 것이다. void method() throws Exception1, Exception2 { ... } 이렇게 예외를 선언하면 자손타입의 예외까지도 발생할 수 있다는 점을 주의해야 한다. 그렇게 때문에 try-catch문을 사용해 중간에 예외 처리가 되어야 한다. 오버라이딩할 때는 단순히 선언된 예외의 개수가 아니라 상속관계까지 고려해야 한다. // try-catch문을 사용하지 않았을때 public static void method1() throws..
예외처리란? 정의 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대한 코드를 작성하는 것 목적 예외처리의 목적은 예외 발생으로 인한 실행중이 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것 프로그램 오류 컴파일 에러 컴파일 시 소스코드에 대한 오타나 잘못된 구문, 자료형 체크 등의 기본적인 문법 오류가 있을때 발생 런타임 에러 실행 시에 발생하는 에러 논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분하였다. 에러(error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) 프로그램 코드에 의해서 수습될 수 ..