*.java -> *.class 자체가 되지 않는 에러
-> 소스코드의 구문 오류로 인하여 컴파일이 불가능한 상태
-> 이클립스에서 빨간색으로 표시되는 경우에 해당한다.
-> 프로그램을 실항하기 전에 발견되므로 상대적으로 고치기 쉽다.
-> 구문상에는 에러는 없지만, 프로그램이 실행되는 과정에서 다양한 경우의 수에 대응하지 못하여 발생하는 예외상황
-> 런타임에러가 발생하면 프로그램은 강제로 종료된다.
-> 우리가 프로그램의 에러라고 부르는 현상은 대부분 런타임에러에 해당한다.
논리 오류
자바 가상 머신(JVM) 자체 오류
예외(Exception)
자바 가상 머신
은 프로그램 실행중에 예외가 발생하면 관련된 예외 클래스로부터 예외객체를 생성하여 프로그램 지정된 예외처리 구문으로 넘긴다.✔ NullPointerException 👍👍
try {
// 기본적으로 실행되는 부분
} catch(에외클래스이름 객체이름) {
// try 블록에서 예외가 발생한 경우
// 이곳으로 제어가 넘어온다.
} finally {
// 예외 상황의 발생 여부에 상관없이
// 무조건 실행되는 부분
// finally 블록은 생략 가능하다.
}
e.printStackTrace() 👍
e.getMessage()
알 수 없는 에러
를 의미 하도록 구성한다. try {
for(int i = 0; i<src.length; i++) {
arr[i] = Integer.parseInt(src[i]);
}
} catch(NumberFormatException e) {
System.out.println("입력값에 오류가 있습니다.");
// 개발자가 보려는 용도로 출력하는 시스템 에러 메세지
e.printStackTrace();
} catch(ArrayIndexOutOfBoundsException e) {
System.out.println("데이터가 너무 많습니다.");
e.printStackTrace();
} catch(Exception e) {
/*
* 예외 종류를 의미하는 모든 클래스는
* Exception 클래스를 상속받으므로,
* 이 블록은 모든 종류의 예외에 대처할 수 있다.
*/
System.out.println("알 수 없는 예외가 발생했습니다.");
e.printStackTrace();
} finally {
// 이 블록은 예외의 발생 여부에 상관없이
// 무조건 실행된다.
System.out.println("데이터 변환 종료");
}