null Point erException과의 조우

8917 단어 JavaMarkdowntech
안녕하세요.노엘입니다.
회사 연수에서 널포인트 엑시셉션이 걸려서 넘어져서 메모로 남겼어요.
신인은 가는 길이라고 생각해요.
사용 언어는 자바입니다.

자기 소개

  • 22졸업,SE1학년생.
  • 도쿄도 내 IT 기업에서 일한다.
  • 고등학교 교사 자격증, 기본정보기술자(FE)를 취득한다.나는 오토바이를 타고 싶다. 최근에는 일반적으로 오토바이 면허를 취득한다.
  • 대학 시절에는 컴퓨터를 자주 접하기 때문에 일반적인 수준의 기능이 있었지만 프로그래밍은 아직 성숙하지 않았다.
  • 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は存在しませんでした")
    }
    
    정답인 것 같습니다.
    누엘인지 아닌지는 등호로 판단하는...

    최후


    예외적으로 심오하게 처리하다.
    북반 구조기 등으로 초기값을 잘 제어할 수 있다면...저도 그렇게 생각해요. 어때요?나는 약간의 지식을 더해서 다시 한 번 살펴보겠다.
    나는 앞으로도 걸려 넘어진 곳을 출력할 수 있었으면 좋겠다고 생각한다.

    좋은 웹페이지 즐겨찾기