본문으로 바로가기

[JAVA]자바 예외 발생시키기

category JAVA 2020. 6. 21. 21:02

자바 개발을 하다 보면 코드에서 Exception이 예상 되는 부분에서

예외처리를 해주게 되는데, 이때 테스트를 위해 직접 Execption을 발생시켜

테스트를 해볼 수 있는 경우가 있습니다.

class ExceptionEx
{
    public static void main(String args[]) 
    {
        try {
            // throw로 예외를 발생시킬 수 있습니다.
            throw new Exception("예외를 강제로 발생시켰습니다.");  
        } catch (Exception e)    {
            System.out.println("에러 메시지 : " + e.getMessage());
            e.printStackTrace();
        }
        System.out.println("프로그램이 정상 종료되었음.");
    }
}

오늘 사이드 프로젝트를 진행하다 예외를 발생시켜 메시지를 보내야할 경우가 있는데

그 경우를 예제로 이용하여 예외 발생을 살펴봅니다

  • 자바 키워드 throw를 사용하여 강제 예외 발생을 할 수 있습니다.

  • service 로직에서 발생한 예외로 가입코드가 다를 경우 예외를 발생시킵니다.

    // service.메서드
    public void groupJoin(StudyMember studyMember,String code) throws Exception {
          long sno = studyMember.getSno();
          String joincode = studyDao.getJoinCode(sno);
          if (code.equals(joincode)) {
              studyDao.groupJoin(studyMember);
          } else {
              throw new Exception("가입코드가 틀립니다");
          }
      }
  • service에서 받은 예외를 controller가 ResponseEntity타입으로 클라이언트에게 "가입코드가 틀립니다"의 메시지를 전달할 수 있게 해주었습니다.

    @ResponseBody
      @RequestMapping(value="/study/join", method=RequestMethod.POST)
      public ResponseEntity<String> joinGroup(String code, StudyMember studyMember, HttpSession session) {
    
          String id = (String) session.getAttribute("loginedMemberId");
          studyMember.setId(id);
    
          ResponseEntity<String> entity = null;
          try {
              studyService.groupJoin(studyMember,code);
              entity = new ResponseEntity<String>("SUCCESS",HttpStatus.OK);
          } catch (Exception e) {
              e.printStackTrace();
              entity = new ResponseEntity<> (e.getMessage(),HttpStatus.BAD_REQUEST);
          }
          return entity;
      }