JAVA/코딩

[JAVA]try catch(예외처리) 사용하기

으악꿈 2021. 2. 18. 16:31
728x90

1. 예외란 ?

예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류

Exception 종류

발생 원인

ArithmeticException

정수를 0으로 나눌경우 발생 

ArrayIndexOutOfBoundsExcetion

배열의 범위를 벗어난 index를 접근할 시 발생

ClassCastExcetion

변환할 수 없는 타입으로 객체를 반환 시 발생 

NullPointException 

 존재하지 않는 레퍼런스를 참조할때 발생 

IllegalArgumentException

잘못된 인자를 전달 할 때 발생 

IOException

입출력 동작 실패 또는 인터럽트 시 발생 

OutOfMemoryException 

메모리가 부족한 경우 발생  

NumberFormatException

문자열이 나타내는 숫자와 일치하지 않는 타입의 숫자로 변환시 발생

     로 표시된 Exception은 발생 빈도수가 높다.

 

 

2. try catch 구문을 사용해야하는 이유 ?

- try catch 구문을 통해 예외처리(Exception Handling) 하여 프로그램을 종료 되지 않고 정상적으로 작동되게 만들어줄 수 있다.

 

 

3. try catch 구문 사용법


try{
    // 예외가 발생할 수 있는 코드
} catch(Exception e){
    // Exception1 이 발생한 경우, 처리를 위한 코드
} catch(Exception2 e){
    // Exception2 이 발생한 경우, 처리를 위한 코드
} finally{
    // 예외 발생 여부에 상관없이 실행되어야 하는 코드
}

 - try{} 안에는 예외가 발생할 수 있는 코드를 넣어준다.

 - catch(Exception e){} 안에는 매개변수에 선언되어 있는 Exception이 발생했을 때, 처리할 코드를 넣어준다.

 - finally{} 안에는 예외 발생 여부에 상관없이 실행되어야 하는 코드를 넣어준다.

 

ex)  다음 코드를 실행시키면 아래 결과값이 나온다.


try{
    String txt1 = null;
    String txt2 = "test";
    
    if(txt1.equals(txt2)){
        System.out.println("같은 문자열");
    } else{
        System.out.println("다른 문자열");
    }
} catch(Exception e){
    System.out.println("예외발생!!");
} finally{
    System.out.println("프로그램 종료");
}


txt1이 null 인데 equals()를 호출하는 경우 NullPointException이 발생하여 catch 구문의 "예외발생"과 finally 구문의 "프로그램 종료"가 출력된다.

 

 

 

4. 사용시 주의점

- 예를 들어 웹개발시 구성이 [ Controller <-> Service <-> Mapper ] 처럼 되어있는 경우 Service, Mapper 단에서 발생하는 모든 예외는 throws Exception 처리하여 Controller 단에서 처리하는게 좋다.

 

ex)

 - Controller.java


@RequestMapping(value="test.do")
public String controllerTest(){

    @Autowired
    private TestService testService;
    
    try{
    	testService.test();
    } catch(Exception e){
    	e.printStackTrace();
        return "errorPage.jsp"
    } 
}

 - Service.java


@Service
public class ServiceTest {
    @Autowired
    private TestMapper testMapper;
    
    public void test() throws Exception{
    	testMapper.test();
    }
}

 - Mapper.java


@MapperScan
public interface MapperTest {
    public void test() throws Exception;
}

 

 

728x90