지금까지 자바 코드에서 예외(exception) 발생시 주로 처리하는 것은 스택 트레이스를 콘솔에 출력하는 것이었죠. 그러면 로그에 남으니 나중에 그것을 보고 어느 코드에서 예외가 발생했는지 찾을 수 있고 무엇이 원인인지 분석할 수 있습니다. 한편, 서버에서 발생하는 예외를 데이터베이스에 저장하면 좋지 않을까 생각 중입니다. 그러면 테이블과 컬럼을 정의해야 하는데, 예외 관련 자료가 무엇이 있는지 알아야 합니다. 이를 위해 간단한 자바 코드를 만들어 보았습니다.
package lee.dorian.java.javatest;
public class ExceptionTest {
public static void main(String[] args) {
String str = "123a";
try {
int num = Integer.parseInt(str); // NumberFormatException 발생
System.out.println("num: " + num);
}
catch (Exception e) {
System.out.println("Exception name: " + e.getClass().getName());
System.out.println("Exception message: " + e.getMessage());
System.out.println("Localized Exception message: " + e.getMessage());
System.out.println("Stack trace: ");
for (int i = 0; i < e.getStackTrace().length; i++) {
StackTraceElement ste = e.getStackTrace()[i];
System.out.println(ste.toString());
}
}
}
}
Exception name: java.lang.NumberFormatException
Exception message: For input string: "123a"
Localised Exception message: For input string: "123a"
Stack trace:
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:580)
java.lang.Integer.parseInt(Integer.java:615)
lee.dorian.java.javatest.ExceptionTest.main(ExceptionTest.java:8)
컬럼으로 추가할 수 있는 자료는 name, message, localized message, stack trace 등이 되겠습니다. 관련 테이블은 다음 포스트에서 보여드릴 예정입니다.
36회 - 천하제일연재대회 시작! 그리고 예정 주제
38회 - 이직을 원하는 이유
39회 - 이직을 주저하는 이유
40회 - 일과 중에 학습 시간을 갖기로
41회 - 서비스 개발에 대한 회의감
42회 - 면접 후 생각
43회 - 천하제일연재대회 보팅 순서 관찰기
44회 - 포트폴리오 DB 계획 그리고 아쉬운 ERD 도구
45회 - 최근의 개발 업무의 실수 그리고 개선점
46회 - 개발 내용 기록에 대한 고민
47회 - 히스토리를 어떻게 남길까
48회 - 아쉬운 면접 결과
49회 - 개인 개발 주제 구상
50회 - 코드 복기 필요
51회 - 업무 분장 변경
52회 - 스프링 기반 restful API 개발 방법 정리 계획
53회 - 엇나간 개발 일정
54회 - 업무 분장 변경 하나? 안 하나?
55회 - 이력서 새로 작성
56회 - 헤드헌터와 통화
57회 - 대기업이냐 중소기업이냐
58회 - 서비스 안정화 필요