티스토리 뷰

예외란

자바를 사용하다보면 null값을 갖는 참보변수를 사용하는 경우나 배열에서 인덱스 범위를 초과해 사용한다면 예외가 발생하면서 어플리케이션이 종료가 된다. 발생하는 예외에 대응하고 어플리케이션이 종료되지않게 하기위해서는 예외처리를 해줘야한다.


예외 처리 코드(try-catch-finally)

프로그램에서 예외가 발생헀을 경우 프로그램의 갑작스러운 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드를 예외 처리 코드라고 한다. 예외 처리 코드는 try-catch-finally문을 이용한다. 

try{
  
    예외가 발생할 가능성이있는 명령어;
  
}catch(예외타입1 변수명){
  
    예외타입1 발생시 처리 할 명령어들;
  
}catch(예외타입2 변수명){
  
    예외타입2 발생시 처리 할 명령어들;
  
}finally{
  
    예외 발생유뮤 상관없이 처리할 명령어;
  
}

정상실행의 경우 : try -> finally

예외1 발생 경우 : try(예외발생) -> 첫번째 catch ->  finally

예외2 발생 경우 : try(예외발생) -> 두번째 catch ->  finally


예외 발생 가능 코드는 try블록에 넣어준다. 정상실행되면 catch블록코드는 실행되지 않고 finally코드를 실행한다. 만약 try안의 코드에서 예외가 발생되면 해당 예외를 매개변수로 가지고있는 catch블록이 실행된 후 finally 블록이 실행된다. try문과 catch문에 return문이 있더라도 finally블록은 항상 실행된다. finally블록은 생략이 가능하여 try-catch만 사용할 수 있고 catch문은 여러개 사용이 가능하다. 주의 할 점은 하위 예외부터 블록을 만들어나가야한다. 만약 Exception catch블록 다음에 ArrayIndexOutOfBoundsException catch블록이 존재한다면 ArrayIndexOutOfBoundsException예외 발생시 Exception 블록으로 처리가 되기때문에 하위예외가 먼저 작성되어야 한다.



예외 떠넘기기(throws)

public void method1(){
    try{
        method2();
    } catch(ClassNotFoundException e){
        System.out.println("오류발생");
    }
}

public void method2() throws ClassNotFoundException {
    Class class = Class.forName("java.long.String2");
}

throws 키워드가 있는 메소드는 try블록으로 감싸 호출되어야한다.

method2()에서 String2클래스는 존재하지 않기때문에 ClassNotFoundException가 발생한다. method2()는 throws로 ClassNotFoundException예외를 처리했기때문에 자신을 호출한 곳으로 예외를 떠넘겨 처리하게 된다. 

'Study ! > JAVA' 카테고리의 다른 글

JAVA 정리 7-1. 쓰레드(Thread)란?  (0) 2018.10.05
JAVA 정리 5. 인터페이스  (0) 2018.09.14
JAVA 정리 4-3. 추상클래스  (0) 2018.09.13
JAVA 정리 4-2. 다형성  (0) 2018.09.13
JAVA 정리 4-1. 상속과 Override  (0) 2018.09.13
댓글