본문 바로가기

Exception (예외)/Java5

NullPointerException (예외) a) 메인 페이지 에서, 구독 버튼을 클릭 했을 때 발생 하는 예외. b) java.lang.NullPointerException. c) java.lang.NullPointerException 예외 ? : this.jdbcTemplate is null 이라 발생 하는 이슈 이다. d) 해결 방안 우선, 구독 버튼을 누르면, SubscriptionController 로그가 뜨기 때문에, 해당 페이지를 확인 하기. 문제 없이 들어와지고, selectOne() 메서드를 수행 한다. selectOne() 메서드를 사용하는 주체는 subscriptionService 이므로, 해당 참조변수가 있는 클래스로 이동해보자. 서비스 레이어가 구현된 클래스 이고, 해당 클래스 내부에서 selectOne() 메서드를 호출하면.. 2023. 8. 21.
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.