카테고리 보관물: JAVA

컴파일 오류와 런타임 오류

컴파일 오류

컴파일 오류란 소스코드를 .class 파일로 컴파일하는 과정에서 JVM이 던지는 오류로서, 대부분 소스코드 자체의 문법적 오류로 인해 발생하는 경우가 대부분이며, 프로그램 자체에서 처리할 방법은 없다. 그러므로 프로그램이 만들어지려면 이런 오류를 반드시 수정해야 한다.

컴파일 오류의 예

  • ClassNotFoundException
  • IllegalAccessException
  • NoSuchMethodException 등

런타임 오류

런타임 오류란 문법적인 오류가 없어서 컴파일 시에는 정상적으로 프로그램이 만들어졌지만 프로그램을 실행하는 과정에서 발생하는 오류를 의미한다. 런타임 오류는 컴파일 오류와 달리 무조건 잘못된 오류는 아니다. 개발자가 의도하지 않은 실수로 프로그램이 실행되는 중에 발생하는 경우로 예를 들어, 배열의 범위를 넘어서 호출하는 경우와 Null 객체에 대한 어떠한 메소드 호출이 대부분이지만 개발자가 특정 상황에서 의도적으로 오류가 발생하도록 설계하기도 한다.

런타임 오류의 예

  • NullPointException
  • ArithmeticException
  • IndexOutOfBoundsException 등

JAVA Exception 내용 세부 분류

예외가 발생을 하면 printStackTrace()를 통해서 예외 내용에 대한 부분을 출력한다.
하지만 예외 전체가 아닌 실제로 예외가 발생한 클래스만 확인하는 방법은 다음과 같이 처리하면 된다.

try{
...
}catch(Exception e){
	StackTraceElement[] ste = e.getStackTrace();
    String className = ste[0].getClassName();
    String methodName = ste[0].getMethodName();
    int lineNumber = ste[0].getLineNumber();
    String fileName = ste[0].getFileName();
    logger.severe("Exception : " + e.getMessage());
    logger.severe(className + "." + methodName + " " + fileName + " " + lineNumber + "line");
}

StackTraceElement 배열의 0번째에는 예외가 발생한 클래스 정보가 있으며, 마지막에는 최초 호출된 클래스의 정보가 있다.
일반적인 WAS에서는 WAS 관련 클래스 정보가 포함될 것이다.