exception

· Spring
도입한 이유 업무를 진행하던 중 로깅과 오류 모니터링을 해야 했다. ELK를 도입하고 싶지만 주어진 시간이 너무 없어서 도입하고 공부할 시간이 너무 없었다. 나는 도입하는 것도 중요하지만 어떻게 효율적으로 사용하고 고도화가 가능한지를 생각해보고 도입하는 것이 중요하다 생각돼서 간단한 Sentry를 이용해 로깅과 오류 모니터링을 구축하였다. Sentry는 여러 언어와 프레임워크를 지원하고 구축 방법도 매우 쉬워서 쉽게 로깅과 모니터링이 가능하다. 가격 정보를 간단하게 정리하면 아래와 같다. 더 자세한 정보는 홈페이지를 참고 바란다. Developer : 1개 계정 사용, 30일 데이터 보존, 오류 5,000개 제한, 트랜잭션 10,000개 제한 Team, Business : 무제한 계정 사용, 90일 데이..
· JPA
JPA 표준 예외 정리 JPA 표준 예외들은 javax.persistence.PersistenceException의 자식 클래스다. 그리고 이 예외 클래스는 RuntimeException의 자식이다. 따라서 JPA 예외는 모두 언체크 예외다. JPA 표준 예외는 크게 2가지로 나눌 수 있다. 트랜잭션 롤백을 표시하는 예외 트랜잭션 롤백을 표시하지 않는 예외 트랜잭션 롤백을 표시하는 예외는 심각한 예외이므로 복구해선 안 된다. 이 예외가 발생하면 트랜잭션을 강제로 커밋해도 트랜잭션이 커밋되지 않고 대신에 javax.persistence.RollbackException 예외가 발생한다. 반면에 트랜잭션 롤백을 표시하지 않는 예외는 심각한 예외가 아니다. 따라서 개발자가 트랜잭션을 커밋할지 롤백할지를 판단하면..
· Java
원인 예외(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..
· Java
예외 되던지기 한 메서드에서 발생할 수 있는 예외가 여럿인 경우, 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수있다. 이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능하다. 예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 다시 발생한 예외는 이 메서드를 호출한 메서드에게 전달되고 호출한 메서드의 try-catch문에서 예외를 또 다시 처리한다. static void method1() throws Exception { try {..
· Java
사용자 정의 예외(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); } ..
· Java
예외 발생시키기 키워드 throw를 사용해서 프로그래머가 고의로 예외를 발생시킬 수 있다. try { // Exception e = new Exception("예외를 발생시킴"); // throw e; throw new Exception("예외를 발생시킴"); // 메시지 지정 } catch (Exception e) { e.printStackTrace(); } 만일 예외처리가 되어있어야 할 곳에 처리가 되어있지 않으면 컴파일 조차 실행되지 않을 수 있다. RuntimeException 같은 경우는 예외 처리를 하지 않아도 컴파일이 가능하다. throw new Exception(); // 컴파일 에러 발생 throw new RuntimeException(); // 컴파일 에러가 발생하지 않음 예외 처리하기..
· Java
메서드(Method)에 예외(Exception) 선언하기 메서드 선언부에 키워드 throws를 사용해서 메서드 내에서 발생할 수 있는 예외를 선언할 수 있다. 예외가 여러개일 경우 쉼표(,)로 구분한다. 이런 경우 예외가 처리된것이 아니고 단순히 전달만 하는 것이다. void method() throws Exception1, Exception2 { ... } 이렇게 예외를 선언하면 자손타입의 예외까지도 발생할 수 있다는 점을 주의해야 한다. 그렇게 때문에 try-catch문을 사용해 중간에 예외 처리가 되어야 한다. 오버라이딩할 때는 단순히 선언된 예외의 개수가 아니라 상속관계까지 고려해야 한다. // try-catch문을 사용하지 않았을때 public static void method1() throws..
· Java
예외처리란? 정의 프로그램 실행 시 발생할 수 있는 예기치 못한 예외의 발생에 대한 코드를 작성하는 것 목적 예외처리의 목적은 예외 발생으로 인한 실행중이 프로그램의 갑작스런 비정상 종료를 막고, 정상적인 실행상태를 유지할 수 있도록 하는 것 프로그램 오류 컴파일 에러 컴파일 시 소스코드에 대한 오타나 잘못된 구문, 자료형 체크 등의 기본적인 문법 오류가 있을때 발생 런타임 에러 실행 시에 발생하는 에러 논리적 에러 실행은 되지만, 의도와 다르게 동작하는 것 자바에서는 실행 시 발생할 수 있는 프로그램 오류를 에러(error)와 예외(exception) 두 가지로 구분하였다. 에러(error) 프로그램 코드에 의해서 수습될 수 없는 심각한 오류 예외(exception) 프로그램 코드에 의해서 수습될 수 ..
beekei
'exception' 태그의 글 목록