today_is

[ Exception ] 예외처리, 예외전가 본문

spring

[ Exception ] 예외처리, 예외전가

ye_rang 2024. 1. 30. 09:34

오늘의 목표

코드를 적다보면 발생하는 예외들이 많다. 

예외를 처리하거나, 전가하여서 에러를 막아보자.

 

 

 


 

 

  NullpointerException 예외를 만들어보기  

HomeController
home.jsp

 

웹 브라우저창으로 에러 확인

 

 

 

콘솔 창으로 에러 확인

 

 

  에러 뜨는 이유  

date 변수에 null 을 넣고 

SimpleDateFormat 함수를 사용한다 한들, null 이다

 

null이 담겨있는 today 변수를 호출하면 NullpointerException 에러가 뜬다

 

 

 

  해결방법       1 )  try ~ catch  

 

콘솔창에 에러에 대한 메시지를 띄워서 에러를 알리자.

 

예외처리에는 try, catch, finally 가 있다.

 

try {

일반, 실행 예외 발생 가능 코드 

}

 

catch {

try에서 예외가 발생하면 처리할 구문

}

 

finally {

예외 발생과는 관계 없이 실행되는 구문

}

 

  해결방법        2 )  ExceptionHandler   

 

예외를 지정할 수 있다

 

 

 

 

 

 

 

 

  ArithmeticException / by Zero  예외를 만들어보기  

 

0으로 나누려고 할때

 

 

  해결방법        3 )  alert 창을 통해서 예외 발생에 대해 알려준다   

@controller
(..중략..)


//	예외를 전가시켜 Controller 까지 보냈기 때문에
	//	예외에 대한 처리는 Controller 에서 이루어짐 
	@ExceptionHandler(ArithmeticException.class)
	public ModelAndView divideByZero(ArithmeticException e) {
		ModelAndView mav = new ModelAndView("alert");
		
		//	0으로 나눈 경우에서 발생하는 문제가 어떤 문제인지 알려주자 ! 
		mav.addObject("e", e.getMessage());
//		mav.addObject("url", "/");		이전 페이지말고, 대문 페이지로 되돌려 보내고자 할때
		mav.addObject("msg","값을 0으로 나눌 수 없습니다");
		
		return mav;
	}

 

 

 

 

  (추가 !!)   

프로젝트를 실행하니까 8080 서버에 프로세스가 점유되어있다? 는 에러가 떠서 해결하는 방법을 찾았다

 

 

 

1) 8080 서버에 돌아가고 있는 프로세스를 찾는다

netstat -ano | findstr 8080

 

2) 프로세스 아이디를 이용해 해당 프로세스를 종료시킨다

taskkill /f /pid 프로세스 아이디

 

 

만약 액세스가 거부당한다면 

관리자모드로 명령프롬프트를 열어서 진행해주면 끝 !!

 

 

이러고 다시 이클립스 run 해주면 잘된다