본문 바로가기

IT일반과목/java

예외처리

예외의 개념 - 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류


예외의 종류

1. 일반 예외(Exception) == 컴파일러 체크 예외





2. 실행 예외(Runtime Exception)


실행예외는 자바 컴파일러가 체크를 하지 않기 때문에 오로지 개발자의 경험에 의해서 예외처리 코드를 삽입해야한다.

대표적인 몇가지를 알아보겠다.










2.1 NullPointerException

 -> java.lang.NullPointerException일 것이다.

이말은 객체 참조가 없는 상태이다.

-> 객체가 없는 상태에서 객체를 사용하려 했으니 예외가 발생하는 것이다.


========================================================================

간단한 코드

public class NullPointerExceptionExample {

public static void main(String[] args) {

String data = null;//data가 null이라는 값을 가지고 있기 때문에 String객체를 참조하고 있지 않다.

System.out.println(data.toString());//하지만 여기선 toString() 메소드를 호출하고 있다.이래서 발생한다.


}


}


========================================================================


2.2 ArrayIndexOutOfBoundsException

 -> 배열에서 인덱스 범위를 초과하여 사용할 경우, 실행 예외엔 java.lang.ArrayIndexOutOf-BoundsException이 발생한다.

이말은 배열의 길이를 초과한상태에서도 사용할려고 해서 오류가 발생하는 것이다.


======================================================================

간단한 코드

public class ArrayIndexOutOfBoundsExceptionExample {

public static void main(String[] args) {

 String data1 = args[0];

 String data2 = args[1];


System.out.println("args[0]: "+data1);//여기서 에러가 뜨는데 두개의 실행 매개값을 주지않았기 때문에 args[0]하고 args[1]을 사용할수 없다는 것이다.

//Run->Run Configurations]를 선택후 , Arguments탭의 Program arguments를 입력하면 예외가 발생하지 않는다.

System.out.println("args[1]: "+data2);

}

}


=============================================================================

2.3 NumberFormatException

 -> 문자열로 되어있는 데이터를 숫자로 변경하는 경우가 자주 발생한다.

반환 타입 

 메소드명(매개 변수)

설명 

 int

Integer.parseInt(String s) 

주어진 문자열을 정수로 변환해서 리턴 

double 

Double.parseDouble(String s) 

주어진 문자열을 실수로 변환해서 리턴 



2.4 ClassCastException

 -> 타입변환(Casting)은 상위 클래스와 하위 클래스 간에 발생하고 구현 클래스와 인터페이스 간에도 발생한다. 이러한 관계가 아니라면 클래스는 다른 클래스로 타입 변환할 수 없다. 억지로 타입 변환을 시도할 경우 ClassCastException이 발생한다.