티스토리 뷰

반응형

try 구문

Exception을 처리하는 첫 번째 단계이다. 예외가 발생할 코드들을 try 구문에 포함시킨다.

 

catch 구문

try 구문과 함께 사용되며 1개 이상의 catch 블록을 가질 수 있다. 각각의 catch 블록은 명시된 exception이 발생하였을 경우 실행된다.

 

try {

} catch (IndexOutOfBoundsException e) {
   
} catch (IOException e) {
    
}

 

1개의 catch 문은 1개 이상의 exception을 한 코드에서 처리할 수도 있다.

try {

} catch (IOException|SQLException ex) {
    logger.log(ex);
    throw ex;
}

 

finally 구문

finally 구문은 try 구문 처리 후 항상 실행된다. 그렇기에 finally 구문 안에 있는 코드들은 exception이 발생하더라도 항상 실행될 수 있도록 보장된다. exception이 발생하던 발생하지 않던 finally 구문을 사용하여 이전에 사용된 자원들이 무조건 회수될 수 있도록 하거나, 다른 처리 코드를 작성하는 습관을 들이는 것이 좋다.

 

public void writeList() {
    PrintWriter out = null;

    try {
    
        out = new PrintWriter(new FileWriter("OutFile.txt"));
       
    } catch (IndexOutOfBoundsException e) {
                                 
    } catch (IOException e) {
                                 
    } finally {
        if (out != null) { // 자원이 할당되어있을 경우 회수한다.
            out.close();
        }
    }
}

 

 

 


 

My Example

public void inviteUser(User user, User invitee) {
    
    boolean isAllowed = true;
    
    try {
    	checkPermission(user);
        
    } catch(UserDoNotHavePermission e) {
    	log.error("User do not have permission.");
        isAllowed = false;
        
    } finally {
    
    	if(isAllowed)
        	processInviteUser(user, invitee);
    
    	saveActivityLog(user, invitee, isAllowed);
    }    
}

 

 

 

 

[ 참고 ] docs.orable.com/exception/finally

 

반응형
반응형