이번에는 Java의 예외 처리에 대해서 말씀 드리겠습니다. 

 

우선 예외 처리라는 것은

 

프로그램이라는 것이 오류가 날수 도 있습니다. 

 

이 오류에 대응하는 처리입니다. 

 

예를 들면 Database에 접속하는데 실패하면 어떻게 할 것인가?

 

SQL 문에서 오류가 나면 어떻게 할 것인가?

 

원하는 파일이 해당 위치 없다면 어떻게 할 것인가?

 

같은 내용입니다. 

어제 Thread.sleep 를 알려 드리면서 

 

ymmedia.tistory.com/192?category=868738

 

위 문서에서 try catch 문이 나와 있습니다. 

 

try {

...1

} catch (Exceptoin e) {

...2

} finally {

...3

}

 

위 코드 1번에서 예외 발생이 가능한 실행문을 

 

위 코드 2번에는 오류 났을 때 실행문을

 

위 코드 3번에는 이프로그램을 실행하고 오류가나도 때려죽어도 해야할 문장을 적으시면 됩니다. 

 

5초마다 Hello 를 실행하는 프로그램을 만들겠습니다. 

 

무한루프로 만들겠습니다. 

 

무한루프를 만들고 100번째 쯤에 Exception 을 발생 시켜서 Thankyou를 찍고 나가도록 만들어 보겠습니다. 

 

package kr.ymmedia.TestProject;

public class App 
{
    public static void main( String[] args )
    {
        
    	
    	
    	try {	
    		
    		System.out.println("Hello ..");
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			System.out.println("Exit....");
		} finally {
			
			System.out.println("Thank you");
			
		}
    }
}

 

어제에 이어서 코드를 확장하면 대충 위와 같습니다. 

 

위와 같이 하면 무한 루프는 아니고 Hello를 찍고 무조건 Thank you 를 찍고 끝납니다. 

 

package kr.ymmedia.TestProject;

public class App 
{
    public static void main( String[] args )
    {
        
    	
    	
	    	try {	
	        	/* 무한 Loop */
	    		int i=0;
	        	for(;;) {
	        		
	        		System.out.println("Hello .." + i);
	        		i++;
	        		if(i == 50) {
	        			throw new Exception();
	        		}
	        		Thread.sleep(1000);
	        		
	        	}
	        	
			} catch (Exception e) {
				System.out.println("Exit....");
			} finally {
				
				System.out.println("Thank you");
				
			}
    	
    	
    }
}

자 새로운 코드는 위와 같습니다. 

저렇게 하면 무한루프가 돕니다. 

 

Hello ..25
Hello ..26
Hello ..27
Hello ..28
Hello ..29
Hello ..30
Hello ..31
Hello ..32
Hello ..33
Hello ..34
Hello ..35
Hello ..36
Hello ..37
Hello ..38
Hello ..39
Hello ..40
Hello ..41
Hello ..42
Hello ..43
Hello ..44
Hello ..45
Hello ..46
Hello ..47
Hello ..48
Hello ..49
Exit....
Thank you

C:\dev\eGovFrameDev-3.7.0-64bit\workspace\TestProject\target\classes>

위코드를 실행하면 중간에 오류가 났고 Thank you는 무조건 찍어 주고 있습니다. 

 

그리고 첫번째 코드에서는 InterruptedException 이라고 명시해 주었지만, 두번재 코드에서는 Exception e 로 범용적인 것으로 썼습니다. 

 

예외는 명시적으로 발생시켜 주는 것이 좋습니다. 

 

하지만, 범용적인 Exception 이 편합니다. ㅎㅎㅎ

 

발생할수 있는 예외처를 고려 할 수 있다면, 보통 eclipse 가 추천해 줍니다. 

 

명시하면되고, 아무래도 여기서는 오류가 날것 같아 하면, Exception 을 사용하시면 됩니다. 

 

즐거운 하루 되십시오.

 

감사합니다. 

 

 

+ Recent posts