Java에서 예외(exception) 란 사용자의 잘못된 조작이나 개발자의 코딩 실수로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점에서 에러와 동일하나, 예외는 예외 처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.
throws
예외 클래스public void method() throws 예외 클래스 {
예외 발생
}
try ~ catch
try{
예외 발생
}catch(예외 클래스){
예외 메세지 출력
}finally{
예외 발생과 관계없이 무조건 실행되는 영역
close()
}
package kosta.basic;
public class ExceptionExam {
public static void add() throws Exception {
int a = 10;
int b = 10;
a = a/b; //예외 발생 여부에 따라서 실행 순서를 알아야 한다.
}
public static void main(String[] args) {
try {
System.out.println("a");
add();
System.out.println("b"); // add() 에서 예외가 발생하므로 catch 절로 이동 (출력X)
} catch (Exception e) {
System.out.println("c");
//e.printStackTrace();
} finally {
System.out.println("d");
}
System.out.println("Done!!!!");
}
}
throw new
예외클래스public static void multi() throws Exception {
int a = 10;
int b = 10;
if(a == b) {
throw new Exception("같은 값");
}
}
NullPointerException
객체 참조가 없는 상태일 때 발생 한다. null
값을 갖는 참조 변수로 객체 접근 연산자인 도트(.)를 사용했을 때 발생한다. 객체가 없는 상태에서 객체를 사용하려 했으니 당연히 예외가 발생한다.
NumberFormatException
문자열로 되어 있는 데이터를 숫자로 변경하는 경우가 많은데, 문자열을 숫자로 변환하는 방법 중 가장 많이 사용되는 코드는 Integer.parseInt(String s)
메소드와 Double.parseDouble(String s)
메소드 이다.
매개값인 문자열이 숫자로 변환될 수 있다면 숫자를 정상적으로 리턴하지만, 숫자로 변환할 수 없는 문자열이 포함되어 있으면 java.lang.NumberFormatException
을 발생시킨다.
배열에서 인덱스 범위를 초과하여 사용할 때 발생 한다.
int[] arr = new int[3];
이라 해 놓고 arr[4]=5;
같은 대입 연산을 시도할 때 발생할 수 있다.
숫자를 0으로 나눌 때 발생 한다.