반응형

2024/02 3

[Java] SLF4J로 예외 로깅하기

이 글에서는 자바에서 SLF4J를 이용하여 예외를 로깅하는 방법에 대해 알아볼 것이다. slf4j-simple API를 이용하도록 하겠다. 일반적으로, 대부분의 예외들은 Logger 클래스의 error() 메서드로 로그를 남긴다. void error(String msg); void error(String format, Object... arguments); void error(String msg, Throwable t); 우선 Logger를 먼저 초기화하도록 하자. Logger logger = LoggerFactory.getLogger(NameOfTheClass.class); 만약 단순히 에러 메시지만을 보여주고 싶다면, 다음과 같이 추가할 수 있다. logger.error("An exception oc..

Java 2024.02.27

[Java] SerialVersionUID 란?

SerialVersionUID는 클래스 버전에 대한 식별자이다. 내가 최초로 만든 Book이라는 클래스는 이 최초의 모습을 유지하지 않고, 개발을 거듭하면서 계속해서 버전업이 될 것이다. 처음에는 title이라는 필드만 있었지만, 나중에는 author, content 등 여러 필드가 추가될 수 있고 또 필요에 따라 추가했던 필드를 삭제하게 될 수도 있다. 이렇게 다양하게 변모할 수 있는 클래스의 버전을 식별하기 위해 SerialVersionUID가 필요하다. class Book implements Serializable { private String title; private String author; private String content; } 위와 같은 형태의 최초(v1)의 Book을 직렬화한 뒤에..

Java 2024.02.20

[Java] Unchecked Exception에 관한 논쟁

Java는 RuntimeException이나 Error와 같은 unchecked exception을 핸들링하도록 강제하지 않기 때문에, 프로그래머들은 unchecked exception만을 던지는 코드를 작성한다거나 RuntimeException을 상속하는 예외만을 만들어 사용하는 등의 유혹에 빠질 수 있다. 이렇게 하는게 프로그래머 입장에서는 편리할 지 모르지만, 이는 예외 처리에 관한 책임을 회피하는 것으로 이어져 결국 해당 클래스를 사용하는 쪽에서 문제가 발생하게 될 수 있다. 왜 Java를 설계한 사람들은 메소드 내부에서 발생할 수 있는 checked exception을 메소드에 명시하도록 강제했을까? 메소드를 호출하는 쪽에서는 해당 메소드가 어떤 예외를 발생시킬 수 있는지를 알아야 이를 어떻게 ..

Java 2024.02.01
반응형