null Point erException과의 조우
회사 연수에서 널포인트 엑시셉션이 걸려서 넘어져서 메모로 남겼어요.
신인은 가는 길이라고 생각해요.
사용 언어는 자바입니다.
자기 소개
NullPoint erException을 만났습니다.
연수 중에 나는 데이터베이스를 이용하여 도서관의 관리 시스템을 구축하기로 결정했다.
데이터베이스에 저장된 정보는 다음과 같다.
데이터베이스 정의
ISBN
title
price
데이터 형식
varchar(10)
varchar(100)
integer
구속
PRI
NOT NULL
데이터베이스 저장 정보
ISBN
title
price
10001
나생문
1100
10002
이두 댄서
1200
10003
도련님
1300
10004
원씨어
1400
10005
마음
1500
주요 기능 중 하나로 콘솔에서 ISBN(inputIsbn)을 입력하고 검색한 책의 기록을 삭제하는 기능이 있다.
따라서 deleteBook에는 입력한 값과 일치하는 책 정보가 저장됩니다.
처리하는 방법 내(필요한 곳만 발췌)
BookListFunction.java
Book deleteBook = objDao.selectByIsbn(inputIsbn);
if (deleteBook.getIsbn().equals(null)){
system.out.println("削除対象のISBNは存在しませんでした")
}
BookDAO.java(필요한 곳만 발췌)
BookDAO.java
public Book selectByIsbn(String isbn){
connection con = null;
Statement smt = null;
Book book = new Book();
try{
String sql = "SELECT * FROM bookinfo where isbn = '" +
isbn + "'";
//DB接続
con = BookDAO.getconnection();
smt = con.createStatement();
//SQL発行
ResultSet rs = smt.executeQuery(sql);
//検索結果をbookに格納
while(rs.next()){
book.setIsbn(rs.getString("isbn"));
book.setTitle(rs.getString("title"));
book.setPrice(rs.getInt("price"));
}
} catch(Exception e){
…省略…
} finally{
…省略…
}
return book;
}
Book.java
Book.java
private String isbn;
private String title;
private int price;
//以下アクセサは省略
여기에서 입력 값 (inputiisbn) 을 "10006"으로 실행할 때 실행 오류가 발생합니다.잘못된 내용은 "NullPoint erException"입니다.
까닭
ISBN이 10006과 일치하는 책이 데이터베이스에 없기 때문에, 반환값으로 deleteBook은 빈 책 (null,null, 0) 을 되돌려줍니다.
deleteBook은 처리 방법의 조건식입니다.getIsbn () 을 통해 얻은 정보는 당연히 null입니다.
즉, if문의 내용은'null.equals(null)'인데 이건 안 될 것 같아요.실체가 없는 것은 같을 수 없겠지.
'문자열형의 비교용 equals 방법'이라는 고정관념에서 비롯된 오류다.
해결하다
BookListFunction.java
if (deleteBook.getIsbn() == null){
system.out.println("削除対象のISBNは存在しませんでした")
}
정답인 것 같습니다.누엘인지 아닌지는 등호로 판단하는...
최후
예외적으로 심오하게 처리하다.
북반 구조기 등으로 초기값을 잘 제어할 수 있다면...저도 그렇게 생각해요. 어때요?나는 약간의 지식을 더해서 다시 한 번 살펴보겠다.
나는 앞으로도 걸려 넘어진 곳을 출력할 수 있었으면 좋겠다고 생각한다.
Reference
이 문제에 관하여(null Point erException과의 조우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/minoel/articles/null-pointer-exception텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)