728x90
  1. 아래 try 구문 안의 if문에서 throw new Exception("오늘 이미 사과를 먹었습니다..");
    구문은 정상적으로 동작 한다.

    <Service 로직 - AppleServiceImpl.java>

    public String insertApple(AppleVO vo) throws Exception {
    	String returnMsg = "";
     	String AppleDay = "";
     	try {
        	 int cnt = 0;
    
         	if(vo.getApple() != null) {
        	     //select 문 호출        
    	         vo.setApple(vo.getApple());
            	 cnt = dao.checkAppleCount(vo);
             	if(cnt > 0) {
                	 throw new Exception("오늘 이미 사과를 먹었습니다..");                    
             	}
         	}            
      	} catch (Exception e) {
        	 returnMsg = e.getMessage();
         	 throw e;
     	}
    
     	return returnMsg;
     }

     

  2. 하지만 void 함수에서는 catch 구문의 throw e; 에서 에러가 발생한다.

    public void insertApple(AppleVO vo) throws Exception {
    String returnMsg = "";
    String AppleDay = "";
    	try {
    		int cnt = 0;
    
     		if(vo.getApple() != null) {
      		   //select 문 호출        
        	  vo.setApple(vo.getApple());
        	  cnt = dao.checkAppleCount(vo);
        	  if(cnt > 0) {
        	      throw new Exception("오늘 이미 사과를 먹었습니다..");                    
         	 	}
     	   }            
      	} catch (Exception e) {
             returnMsg = e.getMessage();
     		 throw e;                          ---> 이 부분 에러 !!!!!
      }

     

     

     

이 경우, void 함수를 return 가능한 함수로 변경해주면 되긴 하지만,
기존 다른 곳에 영향을 줄 수 있어 무식하지만 대안법을 찾아 내었다.

controller 에서 위 구문을 적용하여 처리하면 되었다.

<Controller Logic - AppleController.java>

private HashMap update(AppleVO vo) {
HashMap returnMap = new HashMap();
try{
     int cnt = 0;
	 if(vo.getApple() != null) {
            //select 문 호출        
            vo.setApple(vo.getApple());
            cnt = dao.checkAppleCount(vo);
            if(cnt > 0) {
                throw new Exception("오늘 이미 사과를 먹었습니다..");                    
            }
        }            
        service.updateApple(vo);
    }catch(Exception e){
        returnMap.put("successYN", "N");
        returnMap.put("msg", e.getMessage());
    }
        return returnMap;        
}

* 물론 당연하게도, 비즈니스 Logic 은 Service Logic에서 처리하는 것이 맞다고 알고 있다.

하지만, 필자는 기존 void 함수를 수정하고 싶지 않았기에, 이것저것 찾아보다가 위 대안법을 알게 되었다.

위 Source Code 는 예제라서 실행은 안될 겁니다.  당연하게도....;;;

--> 이런 무식 방법이 아닌 다른 대안법이 있으시면, 댓글로 가르침 부탁 드립니다.

     초보라서 우선 대안법으로 처리 하였습니다.

'IT > Spring MVC' 카테고리의 다른 글

pom.xml 공부 해보자!! (완료)  (0) 2021.05.10
Spring MVC HTML code 치환  (0) 2020.12.03
Eclpise 내 Tomcat 서버 사용 시 debugging port 설정  (0) 2020.12.03

+ Recent posts