Exception

-키보드 입력, 파일 처리, 네트워크 처리, DB처리 등 외부와의 작업을 하는 경우

예의치 못한 에러가 발생할 수 있으므로 자바에서는 반드시 예외처리를 하도록 하고 있다.

 

예외 처리 방법1

: try - catch는 보통 명확환 오류일 때 사용하며, 다중 catch가 가능하다.

 

		try {
		//예외발생 지역
		//실행코드 1
		//int c = System.in.read(); - 예외 발생 (예외 발생 시 밑에 코드 실행 안함)
		//실행코드 3
		}catch(Exception e) {
			//예외 처리 지역
		}finally {
			//반드시 실행하는 지역(예외가 발생하던 안하던 반드시 실행)
			//
		}

 

 

public class ExceptionEx2 {
		// TODO Auto-generated method stub
		String str = "";
		public void foo(int i) {
			try {
				if(i == 1) {
					throw new Exception(); //고의적 예외 발생(밑으로 내려가지 않는다.)
				}
				str += "1"; 
			}catch(Exception e) {
				str += "2";
				return; //메소드를 빠져나감(함정)
			}finally {        //finally 반드 실행한다.
				str += "3";
			}
			str+= "4";
		}
		public static void main(String[] args) {
			ExceptionEx2 ee = new ExceptionEx2();
			ee.foo(0);
			ee.foo(1);
			System.out.println(ee.str);
		}
}

인자 0을 갖는 foo가 먼저 실행되어 처음으로 try문을 만나는데

if문에 해당되지 않으므로 str +="1"을 실행한다. 예외가 발생하지 않았으므로 catch문을 건너뛰고 반드시 실행되는 finally를 만나 str += "3";을 실행한다. 그 다음 str +="4"를 실행하고 빠져나온다. 다음 인자 1을 갖는 foo를 실행하게 되면 if(i == 1) 조건에 일치하므로 고의적으로 발생시킨 예외를 만나게 된다.

예외가 발생하면  str+="1"은 실행하지 않고 건너뛰어 catch문으로 가게되는데 str+="2";를 수행하고 반드시 실행되는 finally를 만나 13423이 출력되게 된다.

+ Recent posts