예외처리
자바에서는 예외를 직접 처리하든지, 직접 처리하지 않을 경우 처리하지 않겠다고 선언해야 한다.
만약 직접 처리하겠다고 선언할 경우 try 문을 사용하고 직접 처리 하지 않을 경우 throws문을 사용해야 한다.
1. try / catch / finally 의 기본 구조
try
{
}
catch (AException e)
{
}
catch (BException e)
{
}
[finally // 생략가능
{
}] |
1) finally 문장은 생략가능하다.
2) 예외(Exception)의 종류는 클래스 계층 구조로 분류되어 있다.
3) 클래스의 계층 구조로 되어 있기 때문에 상위 계층의 Exception을 위에 기술하면 하위의 Exception은 실행되지 않는다. 따라서 최하위의 Exception을 맨 상위에 기술하는 것이 좋다.
4) fianlly 문자은 각 catch문에 return 문이 있어도 finally 문장을 수행한후 return 된다. 단, System.exit() 문장이 있는 경우는 finally 문자을 수행하지 않는다.
2. 예외(Exception)의 종류
1) IOException (입출력시 발행하는 예외)
IOException |
입출력이 잘못되었을 때 발생 |
EOFException |
입출력시 파일의 끝을 만났을 때 발생 |
FileNotFoundException |
파일이 존재하지 않았을 때 발생 |
2) RunTimeException (실행시 발생하는 예외)
NullPointerException |
클래스 객체에 값을 주지 않았거나 잘못 주었을때 |
ArrayIndexOutOfBoundsException |
배열 첨자를 잘못 주었을때 |
ArithmeticException |
수학적인 처리가 잘못되었을때 |
NumberFormatException |
입력된 문자열을 숫자열로 변환시킬 수 없을때 |
3. Exception 예제
// =========================================================
// NumberFormatException
// 문자열을 숫자로 변환시킬수 없을때
//----------------------------------------------------------
// 작성자 : 박원기
// 작성일 : 2002
// =========================================================
class ag_NumberFormatException
{
public static void main(String[] args)
{
int i;
try
{
}
catch(NumberFormatException e)
{
}
System.out.println(args[0]);
}
} |
// =========================================================
// ArrayIndexOutOfBoundsException
// 배열의 인수가 잘못되었을때
//----------------------------------------------------------
// 작성자 : 박원기
// 작성일 : 2002
// =========================================================
class ag_ArrayIndexOutOfBoundsException
{
public static void main(String[] args)
{
String s;
try
{
s=args[1];
System.out.println(s);
}
catch(ArrayIndexOutOfBoundsException e)
{
}
}
} |
// =========================================================
// ArrayIndexOutOfBoundsException
// 배열의 인수가 잘못되었을때
//----------------------------------------------------------
// 작성자 : 박원기
// 작성일 : 2002
// =========================================================
class ag_ArithmeticException
{
public static void main(String[] args)
{
int x, y;
try
{
x=20;
y=x/0;
}
catch(ArithmeticException e)
{
System.out.println("연산식에 오류가 있습니다.");
}
}
} |
|