본문 바로가기

Exception (예외)9

NullPointerException (예외) a) 메인 페이지 에서, 구독 버튼을 클릭 했을 때 발생 하는 예외. b) java.lang.NullPointerException. c) java.lang.NullPointerException 예외 ? : this.jdbcTemplate is null 이라 발생 하는 이슈 이다. d) 해결 방안 우선, 구독 버튼을 누르면, SubscriptionController 로그가 뜨기 때문에, 해당 페이지를 확인 하기. 문제 없이 들어와지고, selectOne() 메서드를 수행 한다. selectOne() 메서드를 사용하는 주체는 subscriptionService 이므로, 해당 참조변수가 있는 클래스로 이동해보자. 서비스 레이어가 구현된 클래스 이고, 해당 클래스 내부에서 selectOne() 메서드를 호출하면.. 2023. 8. 21.
DuplicateKeyException (예외) a) 회원 가입 페이지 에서, 회원 가입시 발생 하는 예외. b) DuplicateKeyException. c) DuplicateKeyException 예외 ? : 멤버 테이블에 MPHONE 칼럼은 유니크 키로 설정 되어 있다. 유니크 키 이기 때문에, 해당 칼럼의 행 데이터는, MPHONE 열의 다른 행들과 절대로 동일 할 수 없다. (무결성 제약 조건 위배) 즉, 이미 동일한 핸드폰 번호의 행 데이터가 있기 때문에 발생. d) 해결방안 DB 설정에 의하여 발생 하는 이슈이고, 해당 예외 발생시, 당연히, 해당 예외에 대한 예외 처리를 해줘야 한다. 현재 DB에 위와 같은 전화 번호를 등록한 회원이 이미 있는 상황 이다. 이때, 동일한 전화 번호로 회원 가입을 시도 하면, 유니크 키 제약 조건으로 인해.. 2023. 8. 21.
NullPointerException (예외) NullPointerException == NPE 에러가 어김 없이 발생 했다. A) 예외 발생 B) 예외 이름 java.lang.NullPointerException C) 원인 파악 을 누르면, 위와 같이 모달창이 뜨고, 원하는 구독을 선택 하고, "이걸로 할게요" 버튼을 클릭 했을 때, 위와 같이 NPE 에러가 발생 했다. [ 코드 확인 하기 ] 사용자가 원하는 구독 상품을 선택 하고, "이걸로 할게요" 버튼을 클릭 하면, subscriptionupdate.do 액션값이 서블릿에게 전송 된다. EL 표현식으로, 세션에 있는 로그인한 회원의 정보도 같이 넘겨 준다. 세션값 mid를 받고, 1) 어떤 구독인지 번호를 받기. 2) 그 구독이 어떤 구독인지 selectOne() 을 해서 구독 정보를 가져오기.. 2023. 7. 29.
Exception (예외) MVC 패턴으로 프론트는 JSP 를 사용해서 구현 했고, Model 과 View 를 연결 하기 위한, Controller 는 서블릿으로 구현 했다. 회원 가입을 시도. 회원 가입 을 클릭 하자 마자, 무언가 에러가 발생 했다. MID 라는 이름을 가진 칼럼은 null 값 일 수 없다는 에러 같다. DB 쪽 문제인듯 해서, 확인해 보았다. JDBC 인터페이스는 문제 없었고, MemberDAO 내부 코드도 이상이 없었다. 그래서, SignupAction.java 파일을 확인해 보았다. insert() 를 하기 전에, mVO 객체에 mid, mpw, name 을 set 하는 상황 이다. 확인해보니, 셋다 null 인 상황 이다. 생각해보니까, 무언가 잘못된점을 느꼈다. View 에서, 회원 가입 링크를 클릭 .. 2023. 7. 16.
JSP 500번 에러 1. JSP 500번대 에러 발생. 2. 32번째 라인에서 에러 발생. 3. java.lang.NumberFormatException : Cannot parse null string FormatException 은 형식 오류를 의미 하고, 앞에 Number가 붙었으니, 숫자 형식 오류를 의미 한다. null을 숫자로 parsing 하지 못한다는 오류 이다. 아래를 보자. request 할거야, num1을, 그리고, parsing 할거야, Integer 타입으로, 그 값을 int num1에 대입 할거야. 라는 의미인데, num1의 값이 null 이기 때문에 발생한 에러 이다. num2 역시 값이 null 이다. 그러면, num1과 num2의 값은 어떻게 부여할 수 있을까 ? 위의 이미지를 보면, form .. 2023. 6. 27.
NoSuchElementException (예외) a) 232번째 코드라인에서 예외 발생 b) java.util.NoSuchElementException c) java.util.NoSuchElementException 예외 ? : 더이상 Element가 없는데도 불러오려고 할 때 발생한다. 즉, Scanner가 읽어올 스트림이 없는데 읽으려고 해서 발생한 예외. d) 해결방안 Stream을 닫아주는 sc.close();을 제거하면 해결 되는 모습을 볼 수 있다. 문제의 상황 1. 232번째 코드라인에서 예외가 발생했다고 하지만, (여기서는 일어날 에러가 마땅히 보이지도 않았다) 해당 코드를 실행시킬때 예외가 발생했다. 2. num : 상품의 고유 번호를 입력 받아 저장할 변수. 3. for문 : 0번째 부터 배열리스트 객체의 크기보다 작을때까지 (인덱스.. 2023. 5. 20.
IndexOutOfBoundsException (예외) a) 351번째 코드라인에서 예외 발생 b) IndexOutOfBoundsException c) IndexOutOfBoundsException 예외 ? : 리스트형 (배열리스트) 객체에서 선언되지 않은 요소를 get() 하는 경우에 발생. 문제의 상황 1. num : 상품의 고유 번호를 입력 받아 저장할 변수 2. for문 : 0번째 부터 배열리스트 객체의 크기보다 작을때까지 (인덱스는 0부터 시작하니) 반복하면서, 3. if문 : 만약 내가 입력한 고유번호가 배열리스트 객체의 i번째 값의 고유번호랑 같아 ? 그러면 배열리스트 객체의 i번째 값을 삭제해줘. 4. System.out.println(data.get(i).getName() + " 상품이 삭제 되었습니다. \n"); break; d) 해결 방안.. 2023. 5. 20.
NullPointerException (예외) Exception (예외) : null 에러가 발생한 모습 상황 1. 객체 3개를 data라는 이름의 배열로 만듦. 2. 사용자로부터 1번 입력을 받아 메뉴를 추가. 3. 현재 생성된 메뉴 목록을 보기 위해 사용자로부터 2번 입력을 받아 메뉴를 출력. data 이름의 객체배열을 i < data.length 까지 루프하면서 메뉴를 출력하겠다는 것인데, data.length는 배열 공간의 크기를 의미한다. 즉, 3개의 객체를 저장할 배열을 만들었기 때문에 배열 공간의 크기는 현재 3이다. for문의 조건식 0 < 3 이고, 0, 1, 2 총 세번을 반복하는데, 만약에 입력한 메뉴가 1개밖에 없으면 data[1], data[2] 는 객체가 존재 하지 않다는 말이 된다. 아래의 그림을 보자. 상품의 이름 : 맥.. 2023. 5. 13.
IndexOutOfBoundsException (예외) 자판기 프로그램 코드를 짜다가 예외가 발생 했다. 구선생에게 물어보니, 배열을 벗어났다는 의미더라. 아래의 코드를 확인해보자. 한참을 곰곰히 생각해보니, 잘못된 코드였다. 만약에 입력을 100으로 해서 num에 100이 저장되었다. mCnt[99] == 0 ? 라는 조건식이 되는데, 애초에 mCnt[99] 는 존재 하지 않는 배열 이다. 아래를 확인해보자. 해당 배열의 길이는 아무리 커봤자 10이기 때문에, 오류가 뜨는 것이다. 배열의 범위를 벗어나므로 우선적으로 입력값이 1 ~ 4 사이로만 가능하다는 조건을 받고 나서, 이 조건을 적어야 한다. 조건의 우선순위를 생각해보자. if((1 2023. 5. 8.