오류(error)는 시스템 레벨에서 프로그램에 심각한 문제를 야기하여 실행 중인 프로그램을 종료
하지만, 예외(exception)는 오류와 마찬가지로 실행 중인 프로그램을 비정상적으로 종료시키지만, 발생할 수 있는 상황을 미리 예측하여 처리 가능
try {
예외를 처리하길 원하는 실행 코드;
// 기본적으로 맨 먼저 실행되는 코드로 여기에서 발생한 예외는 catch 에서 처리
} catch (e1) {
e1 예외가 발생할 경우에 실행될 코드;
} catch (e2) {
e2 예외가 발생할 경우에 실행될 코드;
} // try에서 발생한 예외 코드나 예외 객체를 인수로 전달받아 그 처리를 담당
...
finally {
예외 발생 여부와 상관없이 무조건 실행될 코드;
// try에서 예외가 발생하건 안 하건 맨 마지막에 무조건 실행
}
/*catch 블록과 finally 블록은 선택적인 옵션으로 반드시 사용할 필요는 없음*/
보라색 java.lang.Exception은 자바에서 예외처리를 할 수 있게 제공해주는 최상위 보무 클래스이며 하늘색 Exception들은 단순 Exception입니다. 즉 컴파일 시 발생하는 Exception (일반예외) 하지만 초록색 RuntimeException은 프로그램 실행시 발생하는 런타임Exception (실행예외)
실행예외 : NullPointerException
(NullPointerException : 실제 참조할 대상이 null인데 참조하려고 할때 발생하는 예외)
String[] array = null;
for(int i - 0; i < array.length; i++){
System.out.println(array[i])
}
System.out.println("실행이 되는가")
/*
결과
Exception in thead "main" java.lang.NullPointerException
at RuntimeExceptionExample.main(RuntimeExceptionExample.java:3)
*/
//예외 처리 코드를 사용
try {
String[] array = null;
for(int i - 0; i < array.length; i++){
System.out.println(array[i])
}
}catch(NullPointerException e){
String msg = e.getMessage();
System.out.Println("예외 발생" + msg);
}finally{
System.out.Println("예외 상관없이 실행");
}
System.out.println("실행이 되는가")
}
/*
결과
예외 발생 null
예외 상관없이 실행
실행이 되는가
*/
일반예외 : ClassNotFoundException
(ClassNotFoundException: 해당 클래스가 존재하지 않으면 발생하는 일반 예외)
Class object = Class.forName("java.lang.hajni"); //forName메서드 : 파라미터로 클래스 정보를 넘겨주고, 해당 클래스가 존재하면 객체를 리턴해주는 메소드
System.out.println("실행이 되는가")
/*
컴파일러는 자동으로 일반예외를 감지하고 예외 처리 코드를 사용하도록 강제함.
만약 예외 처리를 구현하지 않으면 프로그램 실행 불가.
*/
//예외 처리 코드를 사용
try{
Class object = Class.forName("java.lang.hajni");
}catch(**ClassNotFoundException e**){
e.printStackTrace();
}
System.out.println("실행이 되는가")
/*
결과
java.lang.ClassNotFoundException: java.lang.hajni
*/