예외(Exception)

실행시에 발생될 에러의 종류 
Syntex 오류 : 문법에 맞지 않는 문장에서 나오는 에러.
Logic(논리)오류 : 프로그램 실행중 결과값의 이상이나, 원하는 값이 나오지 않는 프로그램  흐름상이 오류.(Error)
예외(Exception) : 위와 같은 오류는 아니지만 정상적인 실행을 방해 하는 요소.

종류:  컴파일시 나타나는  예외(java.lang.Exception)
- 반드시 예외처리 해야 한다 
- 컴파일시 예외사항을 제거하고 정상적으로 실행이 되게한다

실행시에 나타나는 예외(java.lang.Exception.RuntimeException)
         -  반드시 예외처리를 할 필요가 없다
 -  프로그램로직을 변경하여 정상적으로 실행이 가능하도록 한다 

예외 발생 : 
메소드 호출시에 throws 에의해 예외가 발생
throw  : 프로그램 코딩시에 프로그래머에 의해서 발생되는 예외

예외처리 
try{
예외가 발생할 가능성이 있는 문장
기타 실행문1;
기타 실행문 ;
}catch(Exception  ex) {

예외가 발생했을경우 실행할 문장 ;
//////////////////////////////////////////
try{
예외가 발생할 가능성이 있는 문장
기타 실행문1;
기타 실행문 ;
예외가 발생할 가능성이 있는 문장
기타 실행문 ;

}catch(XXXXException  ex1) {

해당예외가 발생했을경우 실행할 문장 ;
} catch(XXXXException  ex2) {
해당예외가 발생했을경우 실행할 문장 ;
}catch(Exception ex3) {
예외가 발생했을경우 실행할 문장 ;
}
///////////////////////////////////////////////
    public void  disp()
    {
try{
예외가 발생할 가능성이 있는 문장
기타 실행문1;
기타 실행문 ;

}catch(XXXXException  ex1) {
해당예외가 발생했을경우 실행할 문장 ;
} catch(Exception ex2) {
예외가 발생했을경우 실행할 문장 ;
}finally {
예외와 상관없이 항상 처리해야할 문장;
}
   }
예외 회피  - 예외가 발생하는 문장을 포함하는 메소드의 헤더부분에 throws 를 기술해서  예외를 
다른곳으로 (호출한곳으로) 예외처리를 떠 넘기는 경우 
               - 마지막은 메인클레스까지 가게되며 그사이에 try.catch 문이없을경우 jvm이 종료된다. 



public class ArithmaticTest
{
Random  rd= new Random();
public void process()
{
int a=0, result=0;
for(int i=0; i<20 ; i++)
{
a = rd.nextInt(10);
result = 100 /a;
System.out.println("i=" + i + "a=" + a +
"result=" + result);
}
///////////////////////////////////////////////
for(int i=0; i<20 ; i++)
{
try{
a = rd.nextInt(10);
result = 100 /a;
System.out.println("i=" + i +
"a=" + a + "result=" + result);
}catch(Exception ex) {
System.out.println("Exception ...i=" +
i + "a=" + a);
}
}
for(int i=0; i<20 ; i++)
{
a = rd.nextInt(10);
try{
result = 100 /a;
//System.out.println("i=" + i + "a=" + a +
"result=" + result);
}catch(Exception ex) {
System.out.println("Exception ...");
}finally{
System.out.println("i=" + i + "a=" + a +
"result=" + result);
}
}

'Programming > Java' 카테고리의 다른 글

컬렉션  (0) 2012.02.10
직렬화(Serialize)  (0) 2012.02.07
Thread  (0) 2012.01.10
이클립스 단축키 (펌)  (0) 2011.03.23
ArrayList 와 LinkedList 의 속도 차이와 사용용도 구분 예제  (0) 2011.02.21

+ Recent posts